Je voudrais prétraiter un répertoire de fichiers .gz avant de les soumettre à Hadoop/Spark. C'est pour éviter les problèmes, tels que theseones. Le pipeline de bash suivant presque fait ce dont j'ai besoin, sauf que xargs rm
ne semble pas supprimer les fichiers qui échouent le test gunzip -t
.Supprimer les archives gz corrompues avec "xargs rm"
gunzip -t *.gz 2>&1 | cut -f 2 -d: - | xargs rm
Le pipeline fonctionne en mode silencieux. Pourtant, quand gunzip -t *.gz
est appelé à nouveau, il imprime
gzip: unhappy.gz: unexpected end of file
ou similaire.
Votre commande exacte fonctionne très bien lorsque je la teste avec un faux 'test.gz' créé simplement avec 'echo> test.gz'. Vous devrez fournir plus de détails sur ce qui ne va pas. Des messages d'erreur sont-ils affichés? Quelle est l'entrée fournie à 'xargs rm'? Que se passe-t-il si vous appelez 'xargs rm' avec cette même entrée manuellement? – hvd
Il semble que le problème se pose lorsqu'il y a plus d'un fichier d'entrée corrompu. –
Non apparenté mais, si les données sont valables, avez-vous essayé gzrecover? –