フォルダに含まれている.gzファイルを抽出します。

フォルダに含まれている.gzファイルを抽出します。

約320116個の.pdb.gzファイルを含むフォルダがあります。みんな解凍したいです。 gunzip *.gzを使用すると、パラメータリストが長すぎるというエラーが発生します。フォルダサイズは約2GBです。適切な提案をしてください。

答え1

find . -name '*.pdb.gz' -exec gunzip {} +

-exec gunzip {} +gunzipコマンドラインに多くのファイル名を指定しますが、あまり多くはありません。これは、-exec gunzip {} \;各ファイルに対して新しいプロセスを開始するよりも効率的です。gunzip

答え2

「引数リストが長すぎます」エラーが発生するたびに、使用したい引数のサブセットを使用して、必要なコマンドを複数回呼び出すことで問題を解決できます。xargsこれを自動的に実行するのに役立つツールです。

find . -type f -a -name \*.pdb.gz -print0 | xargs -0 gunzip

答え3

私はこれがうまくいくと思います。処理のために、各ファイルのパス/名前を個別にgunzipに渡します。

find /my/dir -name "*.pdb.gz" -execdir gunzip "{}" \;

答え4

マルチコアコンピュータがある場合、それを使用してもgunzipコンピュータの機能が最大化されないことがわかります。これを行うには、複数を並列に実行する必要がありますgunzip。どの端末で何が行われるかを手動で追跡するのは面倒ですが、GNUパラレルを使用すると簡単に追跡できます。

find . -name "*.gz" | parallel -X gunzip {}

関連情報