[command-line] Unix에서 특정 확장자로 끝나지 않는 파일 이름을 찾으십니까?

디렉토리 목록에서 확장자 목록으로 끝나지 않는 모든 파일을 재귀 적으로 찾을 수있는 간단한 방법이 있습니까? 예를 들어 * .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”로 끝나는 것을 쉘에 알리는 구분 기호 제어 문자입니다.