Com o GNU (para -readable
e -iname
), ache:
find . -iname '*.zip' -type f -readable ! -exec unzip -t {} \; -exec rm -i {} \;
Eu tenho muitos arquivos zip. Alguns não são baixados corretamente e estão corrompidos. Eu quero removê-los.
Existe uma maneira de encontrar os arquivos corrompidos no bash?
O seguinte imprimirá o nome de todos os arquivos zip corrompidos no diretório atual e em seus subdiretórios:
#!/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
Se você deseja removê-los, basta substituir printf '%s\n' "$file"
por rm -f "$file"
.