マルチコア Mac で bzip2 するには、次のコマンドを発行できます (bzip するフォルダー内にいる場合)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
これにより、端末が 14 個の CPU コアを同時に使用しているフォルダー内のすべてのファイルが再帰的に bzip されます。
編集により、使用するコアの数を調整できます
-P14
bzip2 バイナリがどこにあるのかわからない場合は、次のコマンドを実行して確認できます
which bzip2
そのコマンドの出力を置き換えることができます
/opt/local/bin/bzip2
と
すべてのファイルが 1 つのディレクトリにある場合:
bzip2 *
十分です。より堅牢なアプローチは次のとおりです。
find . -type f -exec bzip2 {} +
これは、現在のディレクトリとそのサブディレクトリ内のすべてのファイルを圧縮し、何万ものファイルがある場合でも機能します (ディレクトリ内のファイルが多すぎる場合、* を使用すると機能しなくなります)。
コンピューターに複数のコアがある場合は、複数のファイルを一度に圧縮することで、これをさらに改善できます。たとえば、4 つのファイルを同時に圧縮したい場合は、次を使用します:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
以下のスクリプトを bzip2
に書きました ファイルを別のディレクトリに
#!/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
私のサンプル ファイル名は次のようなものでした
2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2
直接コマンドを取得できなかったので、これを作成しました。これは期待どおりに機能しています。