GNU/Linux >> Tutoriels Linux >  >> Linux

Commande pour compresser plusieurs répertoires dans des fichiers Zip individuels ?

J'ai un seul répertoire qui contient des dizaines de répertoires à l'intérieur.

Je suis nouveau sur la ligne de commande et j'ai du mal à trouver une commande qui va compresser chaque sous-répertoire dans un fichier sous-répertoire.zip unique.

Donc, à la fin, mon répertoire principal sera rempli de tous mes sous-répertoires d'origine, plus le .zip correspondant fichiers contenant le contenu compressé de chaque sous-répertoire.

Est-ce que quelque chose comme ça est possible? Si oui, montrez-moi comment c'est fait.

Réponse acceptée :

Vous pouvez utiliser cette boucle dans bash :

for i in */; do zip -r "${i%/}.zip" "$i"; done

i est le nom de la variable de boucle. */ signifie chaque sous-répertoire du répertoire courant et inclura une barre oblique finale dans ces noms. Assurez-vous d'avoir cd au bon endroit avant de l'exécuter. "$i" nomme simplement ce répertoire, y compris la barre oblique finale. Les guillemets garantissent que les espaces blancs dans le nom du répertoire ne causeront pas de problèmes. ${i%/} est comme $i mais avec la barre oblique finale supprimée, vous pouvez donc l'utiliser pour construire le nom du fichier zip.

Si vous voulez voir comment cela fonctionne, incluez un echo avant le zip et vous verrez les commandes imprimées au lieu d'être exécutées.

Exécution parallèle

Pour les exécuter en parallèle, vous pouvez utiliser & :

for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait

Nous utilisons wait pour indiquer au shell d'attendre que toutes les tâches en arrière-plan soient terminées avant de quitter.

Attention, si vous avez trop de dossiers dans votre répertoire actuel, vous risquez de surcharger votre ordinateur car ce code ne limite pas le nombre de tâches parallèles.


Linux
  1. Copier des fichiers et des répertoires sous Linux

  2. Comment compresser plusieurs fichiers sous Linux

  3. Comment créer plusieurs zips à partir d'un répertoire contenant un million de fichiers XML ?

  4. Décompressez tous les fichiers dans un répertoire

  5. Nombre maximum de fichiers/répertoires sous Linux ?

Commande Ls sous Linux (liste des fichiers et des répertoires)

Comment compresser des fichiers et des répertoires sous Linux

Renommer la commande sous Linux (renommer plusieurs fichiers)

Compresser et archiver des fichiers et des répertoires

Comment compter les fichiers dans le répertoire sous Linux

Principes de base de la ligne de commande Linux - Travailler avec des fichiers et des répertoires