다음을 사용하여 모든 jpg
이미지를 가져올 수 있습니다.
find . -name "*.jpg"
하지만 png
파일을 결과에 추가하려면 어떻게해야합니까?
댓글
답변
다른 매개 변수간에 -o
플래그를 사용하세요.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
는 참처럼 작동합니다.
참고 대괄호와 해당 내용 사이에 공백이 있어야합니다 . 작동하지 않습니다.
설명 :
-
-type f
-파일 만 검색 (디렉토리 제외) -
\(
&\)
–-type f
가 모든 인수에 적용되는 데 필요합니다. -
-o
-논리적 OR 연산자 -
-iname
–-name
와 같지만 대소 문자를 구분하지 않습니다.
댓글
- 괄호가 필요합니까? 명령은 그들 없이도 나를 위해 작동합니다. 일부 셸에 필요합니까?
- @miked 명령은 " 작동 " 없이도 가능합니다. '는 .png로 끝나는 디렉토리와 .jpg로 끝나는 파일에 대한 히트를 받게됩니다. 이는 정확히 의도 한 바가 아닙니다.
- 명확히 해주셔서 감사합니다!
type -f
는 확장되지 않으며 괄호없이 두 표현식 모두에 적용됩니다. 따라서find ./ -type f -iname \*.jpg -o -type f -iname \*.png
도 작동하지만 … ' 2 자 더 길어졌습니다. 🙂 - ' 연산자 우선 순위의 문제입니다.
a * b + c
가a * (b + c)
- @jdhao 좋은 캐치, 수정되었습니다.
와 다른 것처럼
답변
기준을 -o
와 Shadur가 제안했습니다 . -o
는 병치보다 우선 순위가 낮으므로 괄호가 필요할 수 있습니다.
find . -name "*.jpg" -o -name "*.png" find . -mtime -7 \( "*.jpg" -o -name "*.png" \) # all .jpg or .png images modified in the past week
Linux에서는 다음을 수행 할 수 있습니다. 확장 프로그램을 더 간결하게 결합하려면 -regex
를 사용하세요. 기본 정규식 구문은 Emacs ( 기본 정규식 및 대체 용 \|
와 같은 몇 가지 확장)입니다. 확장 정규 표현식 으로 전환 할 수있는 옵션이 있습니다.
find -regex ".*\.\(jpg\|png\)" find -regextype posix-extended -regex ".*\.(jpg|png)"
FreeBSD, NetBSD에서 및 OSX의 경우 확장 정규 표현식에 -regex
와 -E
를 결합하여 사용할 수 있습니다.
find -E . -regex ".*\.(jpg|png)"
댓글
- '는 항상
-iname
대신-name
—image.JPG
및image.PnG
도 캡처합니다.
답변
더 정확합니다.
find . -iregex ".*\.\(jpg\|gif\|png\|jpeg\)$"
댓글
- 왜 " 더 " 정확하다고 말합니까?
- @Kevin
-iregex
는jpg
와JPG Jpg jpG
등입니다.$
는 ' 필요하지 않은 것 같습니다. . - MinGW 에서 잘 작동합니다.
- 먼저, 첫 번째 인수로 검색 폴더를 생략했습니다. 오류. 둘째, OSX에서 괄호를 이스케이프 처리하지 않고 대신 사용해야합니다 : @sorin '의 답변에 표시된대로
find -E . -iregex '.*\.(jpg|png|gif)'
.
답변
분명히하기 위해 Linux, Unix 및 macOS 버전에서 작동하는 유일한 옵션은 다음과 같습니다.
find -E . -regex ".*\.(jpg|png)"
OS X 버전이 약간 다르기 때문입니다.하지만 대부분의 플랫폼에서 잘 작동하는 것을 작성하는 것이 중요합니다.
주석
- -E 플래그는 Ubuntu 14.04에서 찾기에 유효하지 않습니다.
- -E 플래그는
MinGW (적어도 내가 시도한 버전 / 구성 (특정 버전의 기본 구성))
-
-type f \( -iname \*.png -o -iname \*.jpg\)
가 OSX에서 작동하지 않습니까? -
-type f \( -iname \*.png -o -iname \*.jpg\)
가 OSX에서 작동하는지 확인할 수 있습니다.
답변
/\.(jpe?g|png|gif|bmp)$/i;
사용하세요.
댓글 s
- 약간 설명이 필요할 수 있습니다.
find -name
패턴이 여러 패턴과 일치 합니다. 그래서find . | egrep '.jpg|.png'
를 많이 파헤칩니다.