GNU/Linux >> Tutoriels Linux >  >> Linux

Compresser chaque fichier d'un répertoire dans son propre fichier compressé

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

Linux
  1. Comment enregistrer chaque commande tapée dans bash et chaque opération de fichier ?

  2. Tar :Extraire un seul fichier dans un répertoire sans créer de sous-dossiers ?

  3. Comment compresser/décompresser sous Linux

  4. Comment compresser plusieurs dossiers, chacun dans sa propre archive zip ?

  5. Comment compresser plusieurs fichiers dans un seul fichier gz?

Comment créer un fichier Tar Gz

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

Commande Linux tar pour compresser et extraire des fichiers

Décompressez un fichier sur les rapports Solaris - tar :erreur de somme de contrôle du répertoire

Comment compresser tous les fichiers de tous les sous-répertoires dans un fichier compressé dans bash

Comment créer une archive zip compatible Linux d'un répertoire sur un Mac