Ich habe seit einiger Zeit versucht und glaube, dass ich ziemlich nah daran bin, aber ich bin ziemlich neu in Unix, also habe ich das schwierig gefunden.
Ich habe einen Ordner, der viele Ordner enthält, von denen einige ZIP-Dateien enthalten, einige nicht. Ich versuche, alle Zip-Dateien in beliebigen Unterverzeichnissen an Ort und Stelle zu entpacken.
Zum Beispiel habe ich:
Dateien / A / etwas.java
files / B / somezipfile.zip
files / C / someotherfile.zip
files / D / AnotherZipFile.zip
Ich möchte sie entpacken (vorausgesetzt, die Reißverschlüsse enthalten nur .java-Dateien), um ein Ergebnis zu erhalten wie: Dateien / A / etwas.java
files / B / javafile.java
files / C / someotherfilefromzip.java
files / D / Anotherfile.java
Es macht mir nichts aus, wenn die ZIP-Dateien nach dem Entpacken erhalten bleiben oder gelöscht werden, beides ist in Ordnung.
Was ich bisher versucht habe.
1) Ich habe erwartet, dass ich Rohrleitungen, die mir neu sind, wie folgt verwenden kann:
%Vor%Das funktioniert nicht.
2) Ich habe einige Zeit damit verbracht zu suchen, das nächste, was ich mit einer Lösung online habe, ist:
%Vor%Dies wird entpackt, aber entpackt sie in das aktuelle Arbeitsverzeichnis, ich wollte sie an der richtigen Stelle entpacken. Ich verstehe auch diesen Befehl nicht, den ich gerne möchte, während ich versuche zu lernen.
Jede Hilfe wird sehr geschätzt.
Danke,
Dieser Befehl sucht im aktuellen Verzeichnis und in seinen Unterverzeichnissen rekursiv nach Dateien mit Namen, die mit *.zip
pattern übereinstimmen. Wenn die Datei gefunden wurde, führt sie den Befehl sh
mit zwei Parametern aus:
und
%Vor% Dabei ist <filename>
der Name der Datei, die gefunden wurde. Der Befehl sh
ist der Unix-Shell-Interpreter. Option -c
teilt Shell mit, dass das nächste Argument als Shell-Skript interpretiert werden soll. So interpretiert Shell das folgende Skript:
Vor dem Ausführen von% co_de erweitert% Shell den Befehl durch verschiedene Ersetzungen. In diesem speziellen Beispiel ersetzt es
%Vor% mit Ausgabe des Befehls unzip
, die tatsächlich den Verzeichnisnamen ausgibt, in dem sich die Datei befindet. Also, wenn der Dateiname dirname <filename>
ist, rubbelt die Shell ./a/b/c/d.zip
wie folgt:
Wenn ZIP-Dateinamen oder Verzeichnisnamen Leerzeichen enthalten, verwenden Sie Folgendes:
%Vor%