GNU/Linux >> Znalost Linux >  >> Linux

Bz2 každý soubor v adresáři

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.


Linux
  1. Skrytí dat v souborových systémech?

  2. Počítejte řádky ve velkých souborech

  3. Jak převedu tar.bz2 na tar.gz?

  1. Zkopírujte soubory v terminálu Linux

  2. Jak dekomprimovat soubor .bz2

  3. Extrahujete soubor *.tar.bz2?

  1. Přesunout soubory v terminálu Linux

  2. Přesouvání souborů na Linuxu bez mv

  3. Jak komprimovat a dekomprimovat soubory .bz2 v Linuxu pomocí příkazu bzip2