Pas besoin de boucles ou quoi que ce soit de plus que find
et gzip
:
find . -type f ! -name '*.gz' -exec gzip "{}" \;
Cela trouve tous les fichiers normaux dans et en dessous du répertoire courant dont les noms ne se terminent pas par le .gz
extension (c'est-à-dire tous les fichiers qui ne sont pas déjà compressés). Il invoque gzip
sur chaque fichier individuellement.
Modifier, basé sur le commentaire de user unknown
:
Les accolades ({}
) sont remplacés par le nom du fichier, qui est passé directement, en un seul mot, à la commande suivant -exec
comme vous pouvez le voir ici :
$ touch foo
$ touch "bar baz"
$ touch xyzzy
$ find . -exec echo {} \;
./foo
./bar baz
./xyzzy
find . -type f | while read file; do gzip "$file"; done
Je préférerais gzip -r ./
qui fait la même chose mais en plus court.