Jai un répertoire contenant plusieurs dossiers, chacun contenant un fichier .gz. Comment puis-je les décompresser tous en même temps?
Mes données ressemblent à ceci
Liste des dossiers
A B C D
Dans chacun deux, il y a un fichier comme
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
Commentaires
Réponse
Ceci utilise gunzip
pour décompresser tous les fichiers dun dossier et avoir la terminaison .out.gz
gunzip */*.out.gz
Cela « boucle » * dans tous les dossiers contenant un fichier compressé. Permettez-moi dajouter un exemple:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
En utilisant la commande ci-dessus, a.out.gz
b.out.gz
c.out.gz
d.out.gz
sera tous décompressé, mais il « t touchera e.out
puisquil nest pas zippé.
* cela sappelle globbing ou extension de nom de fichier . Vous voudrez peut-être en savoir plus à ce sujet ici .
Commentaires
- Mais que faire si jai plusieurs dossiers dont chacun contient un fichier zip. Comment puis-je parcourir tous les dossiers en boucle?
-
*/*.out.gz
bouclera tous les dossiers (il ' est le*/
part) - @HoHoHo comme le soulignent les mazs, cela fait " boucle ". Jai ' ajouté des explications supplémentaires et un lien vers une page qui explique plus en détail le concept 🙂
Réponse
find . -type f -name "*.gz" -execdir gunzip {} \;
loption execdir pour trouver provoque « find » à « cd » dans chaque répertoire à tour de rôle et exécutez la commande exec (gunzip in ce cas) puis « cd » pour revenir au cwd
gunzip */*.gz
?