gzファイルがたくさんあります。全部抽出したいです。私がやろうとしていることは次のとおりです。
find . | grep .gz | gunzip
しかし、gunzipはstdinputのファイルリストを受け入れません。すべて(その場で)解凍するにはどうすればよいですか?
答え1
現在のディレクトリでgunzip
名前が終わるすべてのファイルを呼び出すには、次の手順を実行する必要があります。.gz
find . -type f -name '*.gz' exec gunzip {} +
標準入力の内容をコマンド引数に変換するより一般的な方法はxargsを使用することですが、このコマンドにはいくつかの注意事項があります。
答え2
たぶん、より良い方法はとオプションをfind
使用することです。これはgrepを必要とせず、一致する各ファイルを個別に渡すことができます。-name
-exec
gunzip
これは次のとおりです。
find . -name '*.gz' -exec gunzip '{}' +
$CWD
名前が終わるすべてのファイル(サブディレクトリを含む)は解凍のために.gz
渡されますgunzip
。さらに、解凍されたファイルは最終的に追加のアクション$CWD
なしで表示されます。