したがって、そのフォルダ.lzo
内のファイルを解凍/test01/primary
してすべてのファイルを削除する必要があります。.lzo
フォルダでも同じことをする必要があります。両方のフォルダに約150個のファイルがあるため、合計300個のファイルがあります。/test02/secondary
.lzo
コマンドラインで次のように実行して、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
両方のフォルダ内のすべてのファイルを同時に削除してプロセスを高速化することもできます。もっと良い方法がありますか?
答え1
マニュアルページによると:
-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
答え2
GNU Parallelは、GNU Parallelに割り当てられた順序でタスクを作成します。したがって、$PRIMARY ファイルを最初にリストし、次に $SECONDARY ファイルをリストすると、$PRIMARY ファイルが最初に処理されます。
〜しない限り --shuf
与えられた。--shuf
パラメータを実行する前に混合します。毎回 $PRIMARY ファイルを受け取ってから $SECONDARY ファイルを受け取ることはできませんが、少なくとも順序はランダムです。