J'ai plusieurs répertoires qui ressemblent à ceci:
dir1/
|_foo.txt
|_bar.txt
dir2/
|_qux.txt
|_bar.txt
Pour chacun de ce répertoire, je veux compresser les fichiers qu'il contient au format * .gz puis supprimer ceux non compressés. Donc, finalement, nous espérons obtenir quelque chose comme ça:
dir1/
|_foo.gz
|_bar.gz
dir2/
|_qux.gz
|_bar.gz
Existe-t-il une méthode Unix simple pour le faire?
gzip */*.txt
Mais l'extension pour chaque fichier sera .txt.gz, car gzip l'utilise pour connaître le nom de fichier d'origine.
Ce qui suit fonctionnera même si vous avez des sous-répertoires. Par exemple. dir1/dir2 /.../ foo.txt
find . -type f -name "*.txt" -exec gzip {} \;
gzip -r dir1 dir2