GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ内のすべてのファイルをBz2

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

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


Linux
  1. Linuxターミナルでファイルをコピーする

  2. Linuxターミナルでファイルを移動する

  3. すべてのファイルを個別に GZip

  1. Linuxでmvなしでファイルを移動する

  2. 現在のディレクトリ内のすべてのファイルに対してコマンドを実行します

  3. *.tar.bz2 ファイルを抽出していますか?

  1. ファイルシステムにデータを隠す?

  2. bzip2 コマンドを使用して Linux で .bz2 ファイルを圧縮および解凍する方法

  3. 大きなファイルの行数を数える