GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Befehl zum Komprimieren mehrerer Verzeichnisse in einzelne Zip-Dateien?

Ich habe ein einziges Verzeichnis, das Dutzende von Verzeichnissen enthält.

Ich bin neu in der Befehlszeile und habe Mühe, einen Befehl zu finden, der jedes Unterverzeichnis in eine eindeutige sub-directory.zip-Datei komprimiert.

Am Ende wird mein primäres Verzeichnis also mit all meinen ursprünglichen Unterverzeichnissen gefüllt, plus der entsprechenden .zip Dateien, die den gezippten Inhalt jedes Unterverzeichnisses enthalten.

Ist so etwas möglich? Wenn ja, zeigen Sie mir bitte, wie es gemacht wird.

Akzeptierte Antwort:

Sie können diese Schleife in bash verwenden :

for i in */; do zip -r "${i%/}.zip" "$i"; done

i ist der Name der Schleifenvariable. */ bedeutet jedes Unterverzeichnis des aktuellen Verzeichnisses und enthält einen abschließenden Schrägstrich in diesen Namen. Stellen Sie sicher, dass Sie cd an die richtige Stelle, bevor Sie dies ausführen. "$i" benennt einfach dieses Verzeichnis, einschließlich abschließendem Schrägstrich. Die Anführungszeichen stellen sicher, dass Leerzeichen im Verzeichnisnamen keine Probleme verursachen. ${i%/} ist wie $i aber ohne abschließenden Schrägstrich, damit Sie daraus den Namen der ZIP-Datei zusammensetzen können.

Wenn Sie sehen möchten, wie das funktioniert, fügen Sie ein echo ein vor dem zip und Sie werden sehen, dass die Befehle gedruckt statt ausgeführt werden.

Parallele Ausführung

Um sie parallel auszuführen, können Sie & verwenden :

for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait

Wir verwenden wait um der Shell mitzuteilen, dass sie warten soll, bis alle Hintergrundaufgaben abgeschlossen sind, bevor sie beendet wird.

Beachten Sie, dass Sie Ihren Computer überlasten können, wenn Sie zu viele Ordner in Ihrem aktuellen Verzeichnis haben, da dieser Code die Anzahl paralleler Aufgaben nicht begrenzt.


Linux
  1. Kopieren Sie Dateien und Verzeichnisse unter Linux

  2. Shell-Skript:Dateien in Verzeichnisse und Unterverzeichnisse sortieren?

  3. Wie erstelle ich mehrere Zips aus einem Verzeichnis mit einer Million XML-Dateien?

  4. Entpacken Sie alle Dateien in einem Verzeichnis

  5. Teilen Sie ein dd-Image in mehrere Dateien auf

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

So komprimieren Sie Dateien und Verzeichnisse unter Linux

Umbenennungsbefehl in Linux (Mehrere Dateien umbenennen)

Komprimieren und Archivieren von Dateien und Verzeichnissen

So zählen Sie Dateien im Verzeichnis unter Linux

Grundlagen der Linux-Befehlszeile – Arbeiten mit Dateien und Verzeichnissen