파일 시스템에서 특정 유형의 모든 파일에 대해 명령을 실행하는 방법은 무엇입니까?

파일 시스템에서 특정 유형의 모든 파일에 대해 명령을 실행하는 방법은 무엇입니까?

방금 손상된 하드 드라이브(유니코드 기호, 공백 등을 사용하여 긴 이름을 가진 복잡한 디렉터리 구조에 분산되어 있음)에서 많은 수의 파일을 복구했습니다. 이제 확인 정보(예: zip 아카이브(LibreOffice 및 기타 XML-in-ZIP 유형 문서 포함), 7z 및 rar 아카이브, 자동 추출 exe 아카이브 등)가 포함된 모든 파일을 확인하고 싶습니다.

이 목표를 어떻게 달성할 수 있나요?

답변1

이름으로 파일 찾기:

find /mount/point -type f \( \
    \( -name '*.zip' -o -name '*.o[dt][bcfghipst]' \) -exec unzip -t {} \; \
    -o -name '*.7z' -exec 7z t {} \; \
    …   \)

find /mount/point -type f \( -name '*.7z' -o -name '*.o[dt][bcfghipst]' \) -exec unzip -t {} \;

유형별로 파일 찾기:

find /mount/point -type f -exec sh -c '
  case "$(file --mime-type -b - <"$0")" in
    application/zip) unzip -t "$0";;
    application/x-7z-compressed) 7z t "$0";;
    application/rar) unrar t "$0";;
  esac
' {} \;

관련 정보