如何对文件系统上的所有特定类型的文件运行命令?

如何对文件系统上的所有特定类型的文件运行命令?

我刚刚从损坏的硬盘驱动器中恢复了大量文件(分布在复杂的目录结构中,名称很长,名称中使用 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
' {} \;

相关内容