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.
14 réponses
cela fonctionne à bash, selon ce lien :
décompresser \*.zip
il suffit de mettre quelques guillemets pour échapper au Joker:
unzip "*.zip"
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
unzip *.zip, ou si elles sont dans des sous-dossiers, puis quelque chose comme
find . -name "*.zip" -exec unzip {} \;
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.
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.
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 ?
utilisez ceci:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
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
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
pour décompresser tous les fichiers d'un répertoire, tapez simplement ce cmd dans le terminal:
unzip '*.zip'
Utiliser
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
pour décompresser un dossier sous linux