Linuxコマンドで正規表現を用いてパターンマッチしたファイルを一括削除する方法
Linuxコマンドで正規表現を用いてパターンマッチしたファイルを一括削除したい場合、以下のようにすると便利だ。
find 検索対象ディレクトリ | grep -E "正規表現" | xargs rm -f
《例》以下のディレクトリ・ファイル構成において、catディレクトリから3階層下にあるディレクトリ配下のファイルより、ファイル名に「index」を含むファイルを削除したい場合
ディレクトリ・ファイル構成例
/var/www/cat/kitten/neko/index-main.html
/var/www/cat/kitten/neko/index-test.html
/var/www/cat/kitten/neko/daisuki/index-test.html
/var/www/cat/kitten/koneko/index-main.html
/var/www/cat/kitten/koneko/index-test.html
/var/www/cat/kitten/neko/kawaii/aaa.html
/var/www/cat/kitten/neko/kawaii/index-main.html
/var/www/cat/kitten/neko/kawaii/index-test.html
/var/www/cat/kitten/neko/kawaii/test.html
/var/www/dog/puppy/inu/index-main.html
/var/www/dog/puppy/inu/index-test.html
/var/www/dog/puppy/inu/wanko/index-main.html
/var/www/dog/puppy/inu/wanko/index-test.html
正規表現のパターン文字列に一致するファイル名一覧を表示するコマンド例
find /var/www/html | grep -E "cat/[^/]+/[^/]+/[^/]+/index-test"
コマンド実行結果
/var/www/cat/kitten/neko/daisuki/index-test.html
/var/www/cat/kitten/neko/kawaii/index-main.html
/var/www/cat/kitten/neko/kawaii/index-test.html
※ファイルを削除する前に、標準出力またはテキストに出力するなどして、パターンマッチしたファイル一覧を目視確認した方が良い。目視確認をすることで、正規表現の記述にミスがあった場合に、削除してはいけないファイルまで削除してしまうという事故を防止できる(かもしれない)。
正規表現のパターン文字列に一致するファイル全てを一括削除するコマンド例(コマンドを実行すると、上記3ファイルが削除される)
find /var/www/html | grep -E "cat/[^/]+/[^/]+/[^/]+/index-test" | xargs rm -f
※findコマンドで検索したファイル一覧をgrepコマンドの正規表現検索で絞り込みを行い、その検索結果をxargsコマンドで受け取り、rmコマンドでxargsで受け取ったものを削除する、というコマンド。