Chcete-li bzip2 na vícejádrovém Macu, můžete zadat následující příkaz (když se nacházíte ve složce, kterou chcete bzipovat)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
Toto rekurzivně zazipuje každý soubor ve složce, ve které je váš terminál, pomocí 14 jader CPU současně.
Počet použitých jader můžete upravit úpravou
-P14
Pokud nevíte, kde je binární soubor bzip2, můžete zadat následující příkaz, abyste to zjistili
which bzip2
Výstup tohoto příkazu je to, co můžete nahradit
/opt/local/bin/bzip2
s
Pokud jsou všechny soubory v jednom adresáři, pak:
bzip2 *
Stačí. Robustnější přístup je:
find . -type f -exec bzip2 {} +
Což zkomprimuje každý soubor v aktuálním adresáři a jeho podadresářích a bude fungovat, i když máte desítky tisíc souborů (použití * se přeruší, pokud je v adresáři příliš mnoho souborů).
Pokud má váš počítač více jader, můžete to dále zlepšit komprimací více souborů najednou. Pokud byste například chtěli komprimovat 4 soubory současně, použijte:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
Napsal jsem níže skript do bzip2
soubory do jiného adresáře
#!/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
název mého ukázkového souboru byl jako
2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2
Nebyl jsem schopen získat žádný přímý příkaz, a proto jsem to udělal. Podle očekávání to funguje dobře.