Per bzip2 su un Mac multi-core, puoi eseguire il seguente comando (quando sei all'interno della cartella che vuoi bzip)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
Questo eseguirà il bzip di ogni file in modo ricorsivo all'interno della cartella in cui si trova il tuo terminale utilizzando 14 core della CPU contemporaneamente.
Puoi regolare il numero di core da utilizzare modificando
-P14
Se non sai dove si trova il binario bzip2, puoi eseguire il seguente comando per capirlo
which bzip2
L'output di quel comando è ciò che puoi sostituire
/opt/local/bin/bzip2
con
Se tutti i file si trovano in una singola directory allora:
bzip2 *
È abbastanza. Un approccio più robusto è:
find . -type f -exec bzip2 {} +
Che comprimerà ogni file nella directory corrente e nelle sue sottodirectory e funzionerà anche se hai decine di migliaia di file (l'utilizzo di * si interromperà se ci sono troppi file nella directory).
Se il tuo computer ha più core, puoi migliorarlo ulteriormente comprimendo più file contemporaneamente. Ad esempio, se desideri comprimere 4 file contemporaneamente, usa:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
Ho scritto sotto script a bzip2
file in un'altra directory
#!/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
il nome del mio file di esempio era come
2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2
Non sono stato in grado di ottenere alcun comando diretto, quindi l'ho fatto. Funziona correttamente come previsto.