標準入力のgunzip

標準入力のgunzip

gzファイルがたくさんあります。全部抽出したいです。私がやろうとしていることは次のとおりです。

find . | grep .gz | gunzip

しかし、gunzipはstdinputのファイルリストを受け入れません。すべて(その場で)解凍するにはどうすればよいですか?

答え1

現在のディレクトリでgunzip名前が終わるすべてのファイルを呼び出すには、次の手順を実行する必要があります。.gz

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

標準入力の内容をコマンド引数に変換するより一般的な方法はxargsを使用することですが、このコマンドにはいくつかの注意事項があります。

答え2

たぶん、より良い方法はとオプションをfind使用することです。これはgrepを必要とせず、一致する各ファイルを個別に渡すことができます。-name-execgunzip

これは次のとおりです。

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

$CWD名前が終わるすべてのファイル(サブディレクトリを含む)は解凍のために.gz渡されますgunzip。さらに、解凍されたファイルは最終的に追加のアクション$CWDなしで表示されます。

関連情報