jpg
다음을 사용하여 모든 이미지를 얻을 수 있습니다 .
find . -name "*.jpg"
png
하지만 결과에 파일을 어떻게 추가합니까 ?
답변1
-o
다양한 매개변수 사이에 플래그를 사용하세요.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
기적적으로 작동합니다.
노트거기~ 해야 하다대괄호와 내용 사이에 공백이 있어야 합니다. 그렇지 않으면 작동하지 않습니다.
설명하다:
-type f
- 파일만 검색(디렉토리 제외)\(
&\)
--type f
모든 매개변수에 적용 해야 합니다.-o
- 논리 OR 연산자-iname
- 유사-name
하지만 일치 여부는 대소문자를 구분하지 않습니다.
답변2
-o
조건문을 as와 결합 할 수 있습니다 .샤둘이 제안함. 연결보다 우선순위가 낮 으므로 -o
괄호가 필요할 수 있습니다.
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( -name '*.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)'
답변3
이것이 더 정확합니다:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
답변4
파일만 필요한 경우:
find ./ -type f -regex '.*\.\(jpg\|png\)$'
예를 들어, "blah.jpg"라는 디렉터리와 일치하지 않습니다.