Se o seu grep o suportar; você poderia fazer um cheque pelo grep.
grep -P '\x00{NNN}' File
Onde NNN é quantos bytes continuamente zero você deseja corresponder. Normalmente, seria max USHRT_MAX ou 65535.
-P
é necessário para usar \x00
Para listar o uso de offsets:
grep -Pboa '\x00{NNN}' File
Então, algo na direção de:
for f in *; do
[ -e "$f" ] || break
if grep -Pq '\x00{1000}' "$f"; then
mv "$f" ../likely_corrupt
fi
done
Além disso, você pode usar hexdump
, xxd
ou algo parecido e corresponder a 000...
.
hexdump -ve '/1 "%02X"'
Mas isso seria uma loucura lenta.
Finalmente, um programa C muito pequeno poderia fazer o mesmo.