Linux findコマンドを使って複数ファイルを解凍する方法
あるディレクトリ下にある圧縮ファイルを 1 コマンドで解凍する方法を紹介します。
イメージとしては、次のようなディレクトリ構成で、1 つのディレクトリに 1 つの圧縮ファイルが置かれている状況です。
dirx
├── dir1
| └── file.gz
├── dir2
| └── file.gz
├── dir3
| └── file.gz
└── dir4
└── file.gz
各ディレクトリ移動して解凍コマンドを実行するのは、たいへんすぎますね。
dirx ディレクトリで次のコマンドを実行すると、すべての file.gz ファイル解凍できます。
find ./ -type f -name "*.gz" -exec gzip -d {} \;
tar.gz の場合は、次のようにコマンドを修正することで同様に解凍できます。
find ./ -type f -name "*.tar.gz" -exec tar -zxvf {} \;
拡張子の部分を変更すれば、各種圧縮ファイルにも対応できます。
過去のログファイルなどを調査するときなどに使えるテクニックです。