Décompressez Tous Les Fichiers Dans Un Répertoire

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 courant via le shell?

Utilisant Ubuntu Linux Server.

139
demandé sur Alex Willison 2010-03-03 23:41:54

14 réponses

cela fonctionne à bash, selon ce lien :

décompresser \*.zip

265
répondu ChristopheD 2018-09-28 09:50:16

il suffit de mettre quelques guillemets pour échapper au Joker:

unzip "*.zip"
63
répondu ghostdog74 2014-04-01 00:14:09

extrait tous les fichiers zip du répertoire courant dans de nouveaux DRS avec le nom du fichier zip.

ex, les fichiers suivants:

myfile1.zip
myfile2.zip 

sera extrait en:

./myfile1/files...
./myfile2/files...

Shell script:

#!/bin/sh
for zip in *.zip
do
  dirname=`echo $zip | sed 's/\.zip$//'`
  if mkdir "$dirname"
  then
    if cd "$dirname"
    then
      unzip ../"$zip"
      cd ..
      # rm -f $zip # Uncomment to delete the original zip file
    else
      echo "Could not unpack $zip - cd failed"
    fi
  else
    echo "Could not unpack $zip - mkdir failed"
  fi
done
41
répondu Pedro Lobito 2017-03-21 17:49:18

unzip *.zip, ou si elles sont dans des sous-dossiers, puis quelque chose comme

find . -name "*.zip" -exec unzip {} \;
28
répondu phatmanace 2010-03-03 20:46:17
for i in *.zip; do
  newdir="${i:0:-4}" && mkdir "$newdir"
  unzip "$i" -d  "$newdir"
done

cela décompresse toutes les archives zip dans de nouveaux dossiers nommés avec les noms de fichiers des archives zip.

a.zip b.zip c.zip seront décompressés dans les dossiers a b c respectivement.

10
répondu Jahid 2017-12-26 17:30:15

aunpack -e *.zip , avec atool installé. A l'avantage de traiter intelligemment les erreurs, et toujours déballer dans les sous-répertoires à moins que le zip ne contienne qu'un seul fichier . Ainsi, il n'y a aucun risque de polluer le répertoire courant avec des masses de fichiers, comme c'est le cas avec unzip sur un zip sans structure de répertoire.

6
répondu kampu 2013-05-27 07:21:25

décompresser tous les fichiers .zip et stocker le contenu dans un nouveau dossier avec le même nom et dans le même dossier que le fichier .zip :

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" ""' _ {} \;

ceci est une extension de la réponse de @phatmanace et adresses le commentaire de @RishabhAgrahari :

cela extraira tous les fichiers zip dans le répertoire courant, Que faire si je veux le zip les fichiers (présent dans les sous-dossiers) extrait dans les sous-dossiers respectifs ?

5
répondu jojo 2018-04-15 19:25:12

utilisez ceci:

for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
2
répondu Ankit Malhotra 2015-02-13 21:59:40

for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done

2
répondu anurag Dalia 2017-09-02 12:45:06

c'est une variante de Pedro Lobito réponse en utilisant comment boucler un répertoire récursivement pour supprimer des fichiers avec certaines extensions enseignements:

shopt -s globstar
root_directory="."

for zip_file_name in **/*.{zip,sublime\-package}; do
    directory_name=`echo $zip_file_name | sed 's/\.\(zip\|sublime\-package\)$//'`
    printf "Unpacking zip file \`$root_directory/$zip_file_name\`...\n"

    if [ -f "$root_directory/$zip_file_name" ]; then
        mkdir -p "$root_directory/$directory_name"
        unzip -o -q "$root_directory/$zip_file_name" -d "$directory_name"

        # Some files have the executable flag and were not being deleted because of it.
        # chmod -x "$root_directory/$zip_file_name"
        # rm -f "$root_directory/$zip_file_name"
    fi
done
0
répondu user 2018-02-15 06:53:09

dans n'importe quel shell POSIX, ceci décompressera dans un répertoire différent pour chaque fichier zip:

for file in *.zip
do
    directory="${file%.zip}"
    unzip "$file" -d "$directory"
done
0
répondu Jeff Fisher 2018-04-16 12:02:32

pour décompresser tous les fichiers d'un répertoire, tapez simplement ce cmd dans le terminal:

unzip '*.zip'
-2
répondu Yacine ELgoub 2018-03-08 11:36:20
for i in `ls *.zip`; do unzip $i; done
-3
répondu Dominik 2010-03-03 20:45:02

Utiliser

sudo apt-get install unzip 

unzip file.zip -d path_to_destination_folder

pour décompresser un dossier sous linux

-3
répondu Mohit Singh 2015-08-19 03:41:11