J'ai un répertoire de fichiers ZIP (créé sur une machine Windows). Je peux les décompresser manuellement en utilisant unzip filename
, mais comment puis-je décompresser tous les fichiers ZIP dans le dossier actuel via le shell?
Utilisation d'Ubuntu Linux Server.
Mettez simplement quelques citations pour échapper au caractère générique:
la source
Le script bash suivant extrait tous les fichiers zip du répertoire courant dans de nouveaux répertoires avec le nom du fichier zip, c'est-à-dire:
Les fichiers suivants:
Sera extrait vers:
Script shell:
la source
"
au nom de fichierdécompressez * .zip, ou s'ils sont dans des sous-dossiers, alors quelque chose comme
la source
gzip'ed
fichiers, utilisezgunzip -rfk .
pour décompresser récursivement à l'intérieur des dossiers respectifsDécompressez tous les
.zip
fichiers et stockez le contenu dans un nouveau dossier du même nom et dans le même dossier que le.zip
fichier:Ceci est une extension de la réponse de @ phatmanace et répond au commentaire de @ RishabhAgrahari :
la source
gzip'ed
fichiers, utilisezgunzip -rfk .
pour décompresser récursivement à l'intérieur des dossiers respectifsfind: illegal option -- n
aide UnZip 6.00 - quelqu'un d' autre?find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Vous avez oublié la liste des répertoires.Cela décompressera toutes les archives zip dans de nouveaux dossiers nommés avec les noms de fichiers des archives zip.
a.zip
b.zip
c.zip
sera décompressé dans desa
b
c
dossiers respectivement.la source
aunpack -e *.zip
, avecatool
installé. A l'avantage de traiter intelligemment les erreurs et de décompresser toujours les sous-répertoires à moins que le zip ne contienne qu'un seul fichier. Ainsi, il n'y a aucun danger de polluer le répertoire courant avec des masses de fichiers, comme c'est le cas avecunzip
un zip sans structure de répertoire.la source
Dans n'importe quel shell POSIX, cela se décompressera dans un répertoire différent pour chaque fichier zip:
la source
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Utilisez ceci:
la source
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
la source
for file in *.zip; do ...
?Si les fichiers le sont
gzip'd
. Ensuite, utilisez simplement:du répertoire racine pour extraire récursivement des fichiers dans les répertoires respectifs en conservant ceux d'origine (ou les supprimer
-k
pour les supprimer)la source
Ceci est une variante de la réponse de Pedro Lobito en utilisant comment parcourir un répertoire de manière récursive pour supprimer des fichiers avec certaines extensions :
la source
la source
Pour décompresser tous les fichiers d'un répertoire, tapez simplement cette cmd dans le terminal:
la source
Utilisation
décompresser un dossier sous linux
la source