Ich habe ein Verzeichnis mit ZIP-Dateien (erstellt auf einem Windows-Computer). Ich kann sie manuell mit entpacken unzip filename
, aber wie kann ich alle ZIP-Dateien im aktuellen Ordner über die Shell entpacken?
Verwenden von Ubuntu Linux Server.
Ich habe ein Verzeichnis mit ZIP-Dateien (erstellt auf einem Windows-Computer). Ich kann sie manuell mit entpacken unzip filename
, aber wie kann ich alle ZIP-Dateien im aktuellen Ordner über die Shell entpacken?
Verwenden von Ubuntu Linux Server.
Antworten:
Dies funktioniert in Bash, gemäß diesem Link :
entpacke \ *. zip
Geben Sie einfach ein paar Anführungszeichen ein, um dem Platzhalter zu entkommen:
unzip "*.zip"
Das folgende Bash-Skript extrahiert alle Zip-Dateien im aktuellen Verzeichnis in neue Verzeichnisse mit dem Dateinamen der Zip-Datei, dh:
Die folgenden Dateien:
myfile1.zip
myfile2.zip
Wird extrahiert zu:
./myfile1/files...
./myfile2/files...
Shell-Skript:
#!/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
"
entpacke * .zip oder wenn sie sich in Unterordnern befinden, dann so etwas wie
find . -name "*.zip" -exec unzip {} \;
gzip'ed
Verwenden Sie für Dateien das gunzip -rfk .
rekursive Entpacken in den entsprechenden Ordnern
Entpacken Sie alle .zip
Dateien und speichern Sie den Inhalt in einem neuen Ordner mit demselben Namen und im selben Ordner wie die .zip
Datei:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Dies ist eine Erweiterung der Antwort von @ phatmanace und der Adressen von @ RishabhAgrahari :
Dadurch werden alle Zip-Dateien im aktuellen Verzeichnis extrahiert. Was ist, wenn die Zip-Dateien (in Unterordnern vorhanden) in den jeweiligen Unterordnern extrahiert werden sollen?
gzip'ed
Verwenden Sie für Dateien das gunzip -rfk .
rekursive Entpacken in den entsprechenden Ordnern
find: illegal option -- n
mit UnZip 6.00 - jemand anderes?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Sie haben die Verzeichnisliste vergessen.
aunpack -e *.zip
mit atool
installiert. Hat den Vorteil, dass es intelligent mit Fehlern umgeht und immer in Unterverzeichnisse entpackt, es sei denn, die Zip-Datei enthält nur eine Datei. Somit besteht keine Gefahr, das aktuelle Verzeichnis mit Massen von Dateien zu verschmutzen, wie dies bei unzip
einer Zip- Datei ohne Verzeichnisstruktur der Fall ist.
In jeder POSIX-Shell wird dies für jede Zip-Datei in ein anderes Verzeichnis entpackt:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Benutze das:
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
for file in *.zip; do ...
richtig zu machen?
Dies ist eine Variante der Antwort von Pedro Lobito , bei der ein Verzeichnis rekursiv durchlaufen wird, um Dateien mit bestimmten Erweiterungslehren zu löschen :
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
Um alle Dateien in einem Verzeichnis zu entpacken, geben Sie einfach dieses cmd in das Terminal ein:
unzip '*.zip'
Verwenden
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
um einen Ordner unter Linux zu entpacken