디렉토리 목록에서 확장자 목록으로 끝나지 않는 모든 파일을 재귀 적으로 찾을 수있는 간단한 방법이 있습니까? 예를 들어 * .dll 또는 * .exe가 아닌 모든 파일
UNIX / GNU 찾기는 강력하지만 exclude
모드 가없는 것 같습니다 (또는 누락되었습니다). 나는 항상 정규 표현식을 사용 하여 특정 표현식과 일치 하지 않는 것을 찾는 것이 어렵다는 것을 알았습니다 .
저는 Windows 환경 ( 대부분의 GNU 도구 의 GnuWin32 포트 사용)에 있으므로 Windows 전용 솔루션에 대해서도 동일하게 개방되어 있습니다.
답변
또는없이 (
그리고 그것을 벗어날 필요가 있습니다.
find . -not -name "*.exe" -not -name "*.dll"
디렉토리 목록도 제외
find . -not -name "*.exe" -not -name "*.dll" -not -type d
또는 긍정적 인 논리 😉
find . -not -name "*.exe" -not -name "*.dll" -type f
답변
find . ! \( -name "*.exe" -o -name "*.dll" \)
답변
$ find . -name \*.exe -o -name \*.dll -o -print
처음 두 개의 -name 옵션에는 -print 옵션이 없으므로 건너 뜁니다. 다른 모든 것이 인쇄됩니다.
답변
grep 명령을 사용하여 무언가를 수행 할 수 있습니다.
find . | grep -v '(dll|exe)$'
이 -v
플래그는 grep
구체적으로 ” 이 표현과 일치 하지 않는 것을 찾습니다”를 의미 합니다.
답변
하나 더 🙂
$ ls -ltr 총 10 -rw-r--r-- 1 scripter linuxdumb 47 12 월 23 일 14:46 test1 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:40 test4 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:40 test3 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:40 test2 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:41 파일 5 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:41 파일 4 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:41 파일 3 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:41 파일 2 -rw-r--r-- 1 scripter linuxdumb 0 1 월 4 일 23:41 파일 1 $ 찾기. 유형 f! 이름 "* 1"! -이름 "* 2"-print ./test3 ./test4 ./file3 ./file4 ./file5 $
답변
find /data1/batch/source/export -type f -not -name "*.dll" -not -name "*.exe"
답변
리눅스 / OS X :
현재 디렉토리에서 시작하여 .dll 또는 .exe로 끝나는 모든 파일을 재귀 적으로 찾습니다.
find . -type f | grep -P "\.dll$|\.exe$"
현재 디렉터리에서 시작하여 .dll 또는 .exe로 끝나지 않는 모든 파일을 재귀 적으로 찾습니다.
find . -type f | grep -vP "\.dll$|\.exe$"
노트:
(1) grep의 P 옵션은 우리가 Perl 스타일을 사용하여 grep 명령 과 함께 사용할 정규 표현식을 작성하고 있음을 나타냅니다 . excecuting의 목적을 위해 그렙 정규 표현식과 함께 명령을, 나는 펄 스타일이 가장 강력한 스타일 주위는 사실을 알게 될 것입니다.
(2) grep의 v 옵션은 정규식을 만족하는 파일을 제외하도록 쉘에 지시합니다.
(3) “.dll $”의 끝에있는 $ 문자는 파일 이름 문자열이 “.dll”로 끝나는 것을 쉘에 알리는 구분 기호 제어 문자입니다.