[unix] find 명령을 사용하여 확장자가있는 모든 파일을 목록에서 찾는 방법은 무엇입니까?

디렉토리 (gif, png, jpg, jpeg)에서 모든 이미지 파일을 찾아야합니다.

find /path/to/ -name "*.jpg" > log

.jpg 파일뿐만 아니라이 문자열을 수정하는 방법?



답변

find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log


답변

find /path/to/  \( -iname '*.gif' -o -iname '*.jpg' \) -print0

작동합니다. 더 우아한 방법이있을 수 있습니다.


답변

find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log

이렇게 -E하면 정규식에서 파 렌스와 파이프를 피할 필요가 없습니다.


답변

find /path/to/ -type f -print0 | xargs -0 file | grep -i image

file명령을 사용하면 파일 이름 (또는 확장자)에 관계없이 파일 형식을 인식하려고합니다.

경우 /path/to또는 파일 이름이 문자열을 포함 image하고 위의 가짜 안타를 반환 할 수 있습니다. 이 경우 제안하겠습니다

cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/


답변

find /path -type f \( -iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \)


답변

위의 @Dennis Williamson의 답변에 추가하여, 동일한 정규 표현식이 파일 확장자에 대소 문자를 구분하지 않게하려면 -iregex를 사용하십시오.

find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log


답변

Mac OS에서

find -E packages  -regex ".*\.(jpg|gif|png|jpeg)"