Как найти поврежденные архивные файлы?

У меня много почтовых файлов. Некоторые из них загружены неправильно и повреждены. Я хочу их удалить.

Есть ли способ найти поврежденные архивы в bash?

С GNU ( -readable и -iname ) найдите:

 find . -iname '*.zip' -type f -readable ! -exec unzip -t {} \; -exec rm -i {} \; 

Следующие будут печатать имя всех поврежденных zip-файлов в текущем каталоге и его подкаталогах:

 #!/bin/bash shopt -s dotglob nullglob globstar for file in ./**/*.zip; do [[ -r $file ]] || continue unzip -t "$file" >/dev/null 2>&1 || printf '%s\n' "$file" done 

Если вы хотите удалить их, просто замените printf '%s\n' "$file" на rm -f "$file" .