unzip file.zip -d xxx
entpackt Dateien in das Verzeichnis xxx, und xxx wird erstellt, wenn es nicht dort ist. Einzelheiten finden Sie in der Manpage.
Die folgende awk-Zeile sollte die Aufgabe erledigen:
ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'|sh
Sehen Sie sich den Test an unten,
Hinweis dass ich |sh
entfernt habe am Ende, da meine Reißverschlüsse gefälschte Archive sind; Ich möchte hier nur die generierte Befehlszeile zeigen.
kent$ ls -l
total 0
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 001.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 002.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 003.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 004.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 005.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 006.zip
-rw-r--r-- 1 kent kent 0 Nov 12 23:10 007.zip
kent$ ls *.zip|awk -F'.zip' '{print "unzip "$0" -d "$1}'
unzip 001.zip -d 001
unzip 002.zip -d 002
unzip 003.zip -d 003
unzip 004.zip -d 004
unzip 005.zip -d 005
unzip 006.zip -d 006
unzip 007.zip -d 007
"hier extrahieren" ist lediglich ein Feature von was auch immer unzip
Wrapper, den Sie verwenden. unzip
extrahiert nur, was tatsächlich im Archiv ist. Es gibt wahrscheinlich keinen einfacheren Weg als ein Shell-Skript. Aber sed
, awk
usw. werden dafür nicht benötigt, wenn Sie eine POSIX-kompatible Shell haben:
for f in *.zip; do unzip -d "${f%*.zip}" "$f"; done
(Sie dürfen die *
NICHT entkommen oder Pfadnamenerweiterung findet nicht statt.) Beachten Sie, dass, wenn das ZIP-Archiv ein Verzeichnis enthält, wie z. B. bei Eclipse-Archiven (die immer eclipse/
), würden Sie am Ende ./eclipse*/eclipse/eclipse.ini
erhalten auf jeden Fall. Fügen Sie echo
hinzu vor unzip
für einen Probelauf.
p7zip
, die Kommandozeilenversion von 7zip erledigt die Aufgabe
7z x '*.zip' -o'*'
Auf Debian und Ubuntu müssen Sie p7zip-full
installieren .