我刚刚从损坏的硬盘驱动器中恢复了大量文件(分布在复杂的目录结构中,名称很长,名称中使用 Unicode 符号、空格等)。现在我想验证所有包含验证信息的文件(例如 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
' {} \;