10

私はcentosを実行しており、フォルダー内に約1,300個のファイルがあり、それぞれを個別にbzipする必要があります。これを渡す最も簡単な方法は何でしょうか?

4

5 に答える 5

24

すべてのファイルが単一のディレクトリにある場合は、次のようになります。

bzip2 *

十分です。より堅牢なアプローチは次のとおりです。

find . -type f -exec bzip2 {} +

これにより、現在のディレクトリとそのサブディレクトリ内のすべてのファイルが圧縮され、数万のファイルがある場合でも機能します(ディレクトリ内のファイルが多すぎると、*を使用すると壊れます)。

コンピューターに複数のコアがある場合は、一度に複数のファイルを圧縮することで、これをさらに改善できます。たとえば、4つのファイルを同時に圧縮する場合は、次を使用します。

find . -type f -print0 | xargs -0 -n1 -P4 bzip2
于 2011-07-27T21:40:29.677 に答える
3

マルチコア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

于 2013-01-13T06:52:44.530 に答える
1

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

直接コマンドを取得できなかったので、これを作成しました。これは期待どおりに正常に機能しています。

于 2020-10-15T17:27:43.783 に答える
0

ディレクトリ内から:bzip2 *

于 2011-07-27T21:40:40.673 に答える
0
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
于 2011-07-27T21:41:09.270 に答える