Solution 1 :
Mettre chaque fichier dans un fichier tar séparé n'a aucun sens dans ce scénario. Vous pouvez utiliser gzip
pour les compresser directement :
gzip *
donnera file1.out.gz
, file2.out.gz
etc
Vous utiliseriez tar
uniquement si vous avez besoin d'une archive compressée en un seul fichier.
Si vous avez besoin d'une archive tar pour chaque fichier, vous pouvez la créer comme suit :
for i in *; do tar -czf $i.tar.gz $i; done
Solution 2 :
Pour construire sur la réponse de @ SvenW (qui ne fonctionnera que sur le répertoire actuel), si vous avez un nombre ÉNORME de fichiers ou si vous voulez le faire sur une structure de répertoire récursive, vous pouvez également utiliser
find . -type f -exec gzip \{\} \;
et si vous devez placer la sortie dans un répertoire différent (dans cet exemple, ../target
) et que vous ne voulez pas supprimer les originaux, vous pouvez faire quelque chose comme :
find . -type f -print | while read fname ; do
mkdir -p "../target/`dirname \"$fname\"`"
gzip -c "$fname" > "../target/$fname.gz"
done