複数のフォルダーがあるディレクトリがあり、各フォルダーには.gzファイルが含まれています。すべてを一度に解凍するにはどうすればよいですか?
データは次のようになります
フォルダのリスト
A B C D
それらすべてにファイルがあります
A a.out.gz B b.out.gz C c.out.gz D d.out.gz
コメント
回答
これはgunzip
を使用して、フォルダ内のすべてのファイルを解凍し、末尾が.out.gz
gunzip */*.out.gz
これで「ループ」します* zipファイルが含まれているすべてのフォルダを経由します。例を追加しましょう:
A a.out.gz B b.out.gz C c.out.gz D d.out.gz E e.out
上記のコマンドを使用して、a.out.gz
b.out.gz
c.out.gz
d.out.gz
はすべて解凍されますが、e.out
圧縮されていないため。
*これは globbing または filenameexpansion と呼ばれます。 こちらで詳細をお読みください。
コメント
- しかし、それぞれにzipファイルが含まれている複数のフォルダーがある場合はどうなりますか。すべてのフォルダをループするにはどうすればよいですか?
-
*/*.out.gz
はすべてのフォルダをループします('は*/
パート) - @HoHoHoが指摘しているように、これは"ループ"。 'いくつかの追加の説明と、概念をさらに説明するページへのリンクを追加しました:)
回答
find . -type f -name "*.gz" -execdir gunzip {} \;
検索するexecdirオプションにより、「find」が各ディレクトリに順番に「cd」され、execコマンド(gunzip inこの場合)、次に「cd」してcwdに戻します
gunzip */*.gz
?