find 명령을 사용하여 여러 확장을 검색하는 방법


답변:


152

-o다른 매개 변수 사이 에 플래그를 사용하십시오 .

find ./ -type f \( -iname \*.jpg -o -iname \*.png \) 매력처럼 작동합니다.

참고 브래킷과 내용물 사이에 공백 이 있어야합니다 . 그렇지 않으면 작동하지 않습니다.

설명:

  • type -f -파일 만 검색 (디렉토리 아님)
  • \(- type -f모든 주장에 적용하기 위해 필요
  • -o -논리 OR 연산자
  • -iname-같지만 -name대소 문자를 구분하지 않습니다.

괄호가 필요하십니까? 명령은 그들없이 나를 위해 작동합니다. 그들은 일부 껍질에 필요합니까?
MikeD

2
@miked이 명령은 명령없이 "작동"하지만, .png로 끝나는 디렉토리와 .jpg로 끝나는 파일은 적중 될 수 있습니다.
Shadur

1
설명해 주셔서 감사합니다! 는 type -f, 확장하고 괄호없이 두 표현식에 적용, 그래서하지 않습니다 find ./ -type f -iname \*.jpg -o -type f -iname \*.png그것은 더 이상 :-) 두 글자 비록 ... 또한 작동
마이킹

2
운영자 우선 순위의 문제입니다. 그냥 좋아는 a * b + c다르다a * (b + c)
Shadur

2
@jdhao 좋은 캐치가 수정되었습니다.
Shadur

86

당신과 기준을 결합 할 수 있습니다 -oShadur에 의해 제안 . 즉 참고 -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.JPGimage.PnG
ccpizza

40

이것은 더 정확합니다.

find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'

10
왜 "더"정확하다고 말합니까?
케빈

2
@Kevin 나는 -iregex일치 jpg뿐만 아니라 같은 것 같아요 JPG Jpg jpG. 나는 $필요하지 않다고 생각합니다 .
ott--

이것은 MinGW에서 잘 작동합니다 .
Peter Mortensen

2
먼저 검색 폴더를 첫 번째 인수로 생략하여 오류가 발생합니다. 둘째, OSX 이스케이프 처리에서는 괄호가 작동하지 않으며 find -E . -iregex '.*\.(jpg|png|gif)'@sorin의 답변에 표시된 것처럼 대신 사용해야합니다 .
ccpizza의

8

명확하게하기 위해 Linux, Unix 및 macOS 버전에서 작동하는 유일한 옵션은 다음과 같습니다.

find -E . -regex '.*\.(jpg|png)'

OS X 버전이 약간 다르기 때문에 대부분의 플랫폼에서 잘 작동하는 것을 작성하는 것이 중요합니다.


2
-E 플래그는 Ubuntu 14.04에서 찾을 수 없습니다
gogaman

-E 플래그는 MinGW에서도 유효하지 않습니다 (적어도 내가 시도한 버전 / 구성 (특정 버전의 기본 구성)).
Peter Mortensen

-type f \( -iname \*.png -o -iname \*.jpg\)OSX에서 작동하지 않는 부분은 무엇입니까?
Shadur

-3
/\.(jpe?g|png|gif|bmp)$/i;

그걸 써.


5
이것을 조금 설명해야 할 수도 있습니다.
혼돈
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.