it-swarm.com.de

Entpacken eines Stapel von Dateien

Wenn ich es versuche

 unzip filename.Zip

es klappt. Ich muss jedoch eine Reihe von Zip-Dateien entpacken.

Warum sind:

 find . -name "*.Zip" -print0 | xargs -0 unzip

oder

 ls *.Zip | xargs unzip

funktioniert nicht?

In beiden Fällen wird die Meldung "Vorsicht: Dateiname stimmt nicht überein:" angezeigt.

34
jeannoburto

Sie können den folgenden Befehl eingeben:

$ unzip '*.Zip'

Suchen Sie hier nach Referenz .

48
vfbsilva

Ihre Befehle funktionieren nicht, weil sie alle Dateien in dieselbe Befehlszeile packen. Während dies mit den meisten Programmen funktioniert, verwendet unzip das erste Argument als Zip-Datei und jedes nach dem ersten als Dateien, die daraus extrahiert werden sollen. Sie müssen den Befehl für jede Datei einmal ausführen:

find . -name "*.Zip" -print0 | xargs -0 -n1 unzip

Oder

find . -name '*.Zip' -exec unzip {} \;
28
Kevin

In Bash können Sie auch Folgendes tun:

for i in *.Zip; do
    unzip "$i"
done

Auch unzip kann das -d Schalter, damit Sie die Ausgabe auf verschiedene Positionen ausrichten können.

Zum Beispiel:

uzdir=/path/to/unzips
for i in *.Zip; do
    [ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i"
    unzip "$i" -d "$uzdir/$i"
done
6
slm

Es gibt eine viel einfachere Lösung als die oben angegebenen. Verwenden Sie das Verzeichnis -d Flagge:

unzip -o somefiles.Zip -d $directoryPath
2
Aditya Mittal