web-dev-qa-db-fra.com

Compressez plusieurs fichiers individuellement avec Gzip

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?

27
neversaint
gzip */*.txt

Mais l'extension pour chaque fichier sera .txt.gz, car gzip l'utilise pour connaître le nom de fichier d'origine.

39
Juliano

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 {} \;
10
dogbane

gzip -r dir1 dir2

8
vovick