したがって、.lzo
フォルダに/test01/primary
ファイルがあり、解凍してからすべての.lzo
ファイルを削除する必要があります。 /test02/secondary
フォルダでも同じことをする必要があります。両方のフォルダに約150.lzo
ファイルがあるので、合計で約300ファイルになります。
このように実行していたコマンドラインから、1つのファイルを圧縮解除しましたlzop -d file_name.lzo
すべての.lzo
ファイルを解凍してから、両方のフォルダーからすべての.lzo
ファイルを削除する最速の方法は何ですか。私は以下のコードを思いついた。
#!/bin/bash
set -e
export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary
lzop -d $PRIMARY/* & lzop -d $SECONDARY/*
find $PRIMARY $SECONDARY -name '*.lzo' -delete
.lzo
ファイルを並行して解凍してから、両方のフォルダー内のすべての.lzo
ファイルを同時に削除して、プロセスを高速化できる可能性があります。もっと良い方法はありますか?
マニュアルページによると:
-U, --unlink, --delete
Delete input files after succesful compression or decompression.
だからあなたは単に走ることができます
lzop -dU -- {"$PRIMARY","$SECONDARY"}/*.lzo
解凍に成功したらすぐに各lzo
ファイルを削除します。lzop
はシングルスレッドであるため、並列処理が必要な場合はgnu parallel
を使用できます。
parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo
GNU Parallelは、与えられた順序でジョブを生成しますGNU Parallel。したがって、最初に$ PRIMARYファイルをリストしてから$ SECONDARYファイルをリストすると、$ PRIMARYファイルが最初に処理されます。
そうでない場合--shuf
が与えられます。 --shuf
引数を実行する前に、引数をシャッフルします。毎回$ PRIMARYファイルを1つ、次に$ SECONDARYファイルを取得することはできませんが、少なくとも順序はランダムになります。