Um auf einem Multi-Core-Mac bzip2 zu erstellen, können Sie den folgenden Befehl ausführen (wenn Sie sich in dem Ordner befinden, den Sie bzip möchten)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
Dadurch wird jede Datei rekursiv in dem Ordner gezippt, in dem Ihr Terminal 14 CPU-Kerne gleichzeitig verwendet.
Sie können durch Bearbeiten anpassen, wie viele Kerne verwendet werden sollen
-P14
Wenn Sie nicht wissen, wo sich die bzip2-Binärdatei befindet, können Sie den folgenden Befehl eingeben, um es herauszufinden
which bzip2
Die Ausgabe dieses Befehls ist das, was Sie ersetzen können
/opt/local/bin/bzip2
mit
Wenn sich alle Dateien in einem einzigen Verzeichnis befinden, dann:
bzip2 *
Reicht. Ein robusterer Ansatz ist:
find . -type f -exec bzip2 {} +
Das wird jede Datei im aktuellen Verzeichnis und seinen Unterverzeichnissen komprimieren und wird sogar funktionieren, wenn Sie Zehntausende von Dateien haben (die Verwendung von * bricht ab, wenn es zu viele Dateien im Verzeichnis gibt).
Wenn Ihr Computer über mehrere Kerne verfügt, können Sie dies weiter verbessern, indem Sie mehrere Dateien gleichzeitig komprimieren. Wenn Sie beispielsweise 4 Dateien gleichzeitig komprimieren möchten, verwenden Sie:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
Ich habe das folgende Skript zu bzip2
geschrieben Dateien in ein anderes Verzeichnis
#!/bin/bash
filedir=/home/vikrant_singh_rana/test/*
for filename in $filedir; do
name=$(basename "$filename" | sed -e 's/\.[^.]*$//')
bzip2 -dc $filename > /home/vikrant_singh_rana/unzipfiles/$name
done
mein Beispieldateiname war wie
2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2
Ich war nicht in der Lage, einen direkten Befehl zu bekommen, also habe ich das gemacht. Dies funktioniert wie erwartet gut.