![.jpg 확장자가 필요하지 않은 경우 파일 시스템에서 모든 JPG 파일을 찾는 방법은 무엇입니까? [복사]](https://linux55.com/image/5738/.jpg%20%ED%99%95%EC%9E%A5%EC%9E%90%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EA%B2%BD%EC%9A%B0%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20%EB%AA%A8%EB%93%A0%20JPG%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
Windows에서 Linux로 전환할 때 가장 먼저 느낀 점은 Linux에는 엄격한 명명 규칙이나 .bmp, .jpg, .exe 등과 같은 필수 파일 확장자가 없다는 것입니다. 그래서 파일 이름 자체로는 파일 형식을 알 수 없습니다.
내 파일 시스템에 있는 모든 JPEG 파일의 확장자가 .jpg인 경우 다음 방법으로 모든 JPEG 파일을 쉽게 찾을 수 있습니다.
find / -type f -name "*.jpg"
하지만 그렇지 않은 경우 JPEG 파일을 모두 찾는 방법을 모르겠습니다.
답변1
디렉터리 및 하위 디렉터리를 크롤링하려면 다음을 수행하세요.
find /home/place/to/crawl -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/jpeg") print $0 }'
그게 뭘 할 수 있지?
- 이 유형의 모든 inode 검색
file
- 명령 파일을 실행하여 파일의 jpeg 헤더를 얻습니다. 예:
image/jpeg
awk
편집하다-i
: MIME 문자열 표준을 사용하기 위해 파일 형식을 출력할 때 파일을 사용하라는 @Franklin 힌트를 추가했습니다 . 이렇게 하면 JPEG 단어에 대한 오탐이 줄어듭니다.
편집 2: @don_crissti 프롬프트를 추가했습니다. 이제 마지막 열만 필터링 awk
하고 일치하는 경우 전체 행을 인쇄합니다 image/jpeg
. 문자 집합 정보를 표시하지 않도록 file
스위치 변경--mime-type