Décompressez Tous Les Fichiers Dans Un Répertoire
J'ai un répertoire de fichiers ZIP (créé sur une machine Windows). Je peux manuellement les décompresser à l'aide de unzip filename
, mais comment puis-je décompressez tous les fichiers ZIP dans le dossier en cours via le shell?
À L'Aide De Linux Ubuntu Server.
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne dans bash, selon ce lien:
unzip "*.zip"
travaillé en effet.Il vous suffit de mettre quelques citations pour échapper à la wildcard:
Extrait tous les fichiers zip dans le répertoire courant dans de nouveaux répertoires avec le nom de fichier du fichier zip.
ex, les fichiers suivants:
seront extraits:
Script Shell:
"
pour le nom de fichierdécompressez *.zip, ou si elles sont dans des sous-dossiers, puis quelque chose comme
gzip'ed
fichiers, utilisezgunzip -rfk .
récursive de la décompression à l'intérieur de dossiers respectifsCela, décompressez l'archive zip dans de nouveaux dossiers nommés avec les noms de fichiers de l'archive zip.
a.zip
b.zip
c.zip
sera décompressé dansa
b
c
dossiers respectivement.Décompressez tous les
.zip
de fichiers et de stocker le contenu dans un nouveau dossier avec le même nom et dans le même dossier que le.zip
fichier:C'est une extension de @phatmanace réponse et adresses @RishabhAgrahari commentaire:
gzip'ed
fichiers, utilisezgunzip -rfk .
récursive de la décompression à l'intérieur de dossiers respectifsfind: illegal option -- n
à l'aide de Décompressez 6.00 - quelqu'un d'autre?aunpack -e *.zip
, avecatool
installé.A l'avantage qu'il traite de manière intelligente avec des erreurs, et toujours décompresse les fichiers dans les sous-répertoires à moins que le zip ne contient qu'un seul fichier . Ainsi, on ne risque pas de polluer le répertoire courant avec des masses de fichiers, comme il est avec
unzip
sur un zip sans structure de répertoire.Dans tout le shell POSIX, cela permettra de décompresser dans un répertoire différent pour chaque fichier zip:
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Utiliser ceci:
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
for file in *.zip; do ...
droit?C'est une variante de Pedro Lobito réponse à l'aide de Comment faire une boucle par le biais d'un répertoire de façon récursive pour supprimer des fichiers avec certaines extensions enseignements:
Si les fichiers sont
gzip'd
. Ensuite, utilisez simplement:à partir de la racine du répertoire de façon récursive extraire les fichiers dans le répertoire respectif, en gardant les originaux (ou supprimer
-k
à les supprimer)Pour décompresser tous les fichiers dans un répertoire, il suffit de taper cette cmd dans le terminal:
`ls`
.for i in *.zip; do ...; done
Utilisation
pour décompresser un dossier sous linux