Ich habe bisher herausgefunden, wie man find verwendet, um alle Dateien rekursiv zu entpacken:
%Vor%Aber ich kann nicht herausfinden, wie man die Zip-Dateien nacheinander nach der Extraktion entfernt. Durch das Hinzufügen von rm * .zip in einer -a -exec-Datei werden die meisten ZIP-Dateien in jedem Verzeichnis gelöscht, bevor sie extrahiert werden. Wenn Sie ein Skript mit dem Befehl rm (mit -i zum Testen) durchforsten, führt dies dazu, dass keine * .zips gefunden werden (oder zumindest beschwert es sich). Natürlich gibt es Leerzeichen in vielen der Dateinamen, aber an dieser Stelle ist die Syntaxierung in einem sed-Befehl, um _s hinzuzufügen, ein bisschen jenseits von mir. Danke für Ihre Hilfe!
thx für den 2. Befehl mit -delete! Hat mir viel geholfen.. nur 2 (vielleicht hilfreich) Bemerkungen von meiner Seite:
-hat ' .zip' anstelle von '. zip' auf meinem Debian-System
verwendet-use -execdir anstelle von -exec & gt; Dadurch wird jede Zip-Datei in ihrem aktuellen Ordner extrahiert, andernfalls erhalten Sie den gesamten extrahierten Inhalt in dem Verzeichnis, in dem Sie den find cmd aufgerufen haben.
finden. -depth -name '* .zip' -execdir / usr / bin / unzip -n {} \; -delete
THX & amp; Grüße, Nord
Wie oben erwähnt, sollte dies funktionieren.
finden. -depth -name '* .zip' -execdir unzip -n {} \; -delete
Beachten Sie jedoch zwei Dinge:
Eine sicherere Lösung könnte sein, die Dateien nach dem Entpacken in ein separates Verzeichnis zu verschieben, das Sie löschen können, wenn Sie sicher sind, dass Sie alle Dateien erfolgreich extrahiert haben.
Ich habe ein Verzeichnis, das sich mit gezippten CSV-Dateien füllt. Externe Prozesse schreiben häufig neue gezippte Dateien. Ich möchte die Originale wie gewohnt entpacken und entfernen.
Dafür benutze ich:
%Vor%Es funktioniert, indem alle zip-Dateien gesucht und erweitert werden, die sich momentan im Verzeichnis befinden. Später, nachdem es fertig ist, gibt es möglicherweise auch neue entpackte neue Dateien, die noch nicht gelöscht werden sollen.
Ich lösche also, indem ich erfolgreich entpackte * .csv-Dateien finde, und benutze sed, um die ursprünglichen Dateinamen zum Löschen neu zu generieren, die dann über den Befehl xargs an rm übergeben werden.