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'edVerwenden Sie für Dateien das gunzip -rfk .rekursive Entpacken in den entsprechenden Ordnern
Entpacken Sie alle .zipDateien und speichern Sie den Inhalt in einem neuen Ordner mit demselben Namen und im selben Ordner wie die .zipDatei:
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'edVerwenden Sie für Dateien das gunzip -rfk .rekursive Entpacken in den entsprechenden Ordnern
find: illegal option -- nmit UnZip 6.00 - jemand anderes?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;Sie haben die Verzeichnisliste vergessen.
aunpack -e *.zipmit atoolinstalliert. 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 unzipeiner 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