Intereting Posts
Добавьте 0, когда значение равно 12 символам Почему мой Linux не отображает дату последнего входа? скрипт bash – программа супервизора Поведение канала «|» в Linux с перенаправлением вывода «>» Удаление теней из окон Metacity Использовать сценарий ожидания из Vagrantfile для обеспечения – проблема с несуществующим файлом во время выполнения Как просмотреть эффективные серверы dns? использовать буферизацию строки, когда вывод трубопровода в файл Может ли любая учетная запись пользователя в Linux вызывать команду chmod? Система не может выделить память, даже если память доступна файл sudoers и passwd только для выбранной группы Включает ли установщик Linux Mint возможность заменить / обновить ТОЛЬКО Linux Mint на двойной системе загрузки? cat filename | cut -f2 | head -1> newfile содержит больше символов, чем ожидалось Как настроить mutt для отображения заголовка даты в моем локальном часовом поясе в пейджере? найти все символические ссылки в дереве каталогов, указывающем вне этого дерева

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

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

Есть ли способ найти поврежденные архивы в 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" .