ワイルドカードを使用して Linux ボックス上で一致するファイルを検索 (および削除) する

ワイルドカードを使用して Linux ボックス上で一致するファイルを検索 (および削除) する

ボックス上のすべてのユーザーの Awstats の特定の構成ファイルを削除したいです。 それらを 1 行で削除する最適な方法は何ですか?

すべてのファイルは、以下の場所にあり/home、次の構造になっています:

/home/{username1}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf
/home/{username1}/domains/{domain2}/public_html/awstats/.data/awstats.{domain2}.conf

/home/{username2}/domains/{domain1}/public_html/awstats/.data/awstats.{domain1}.conf

一部の/home/{username}/domains/フォルダーには複数のドメイン サブフォルダーがあります。

答え1

やってみました

rm /home/*/domains/*/public_html/awstats/.data/awstats.*.conf

?

警告: 次のような名前のファイルがある場合

/home/phred/domains/sci-fi/public_html/awstats/.data/awstats.fantasy.conf

つまり、 の 2 つの出現が{domain1}一致しない場合は、上記のコマンドによってそれも削除されます。これは問題でしょうか?

PS 2回のmatchの出現が{domain1}あなたが尋ねていることであるかどうか、または私が見落としている何か他のものがあるかどうかを確認しない限り、この質問は正規表現(regex)に関するものではありません。シェルのコマンドラインで*、、、?[一致する])が使用される場合、それらは次のように呼ばれます。ワイルドカード

答え2

/home次のコマンドを実行します

find . -name 'awstats*conf' | xargs rm

結果をパイプする前に、xargsfind . -name 'awstas*.conf単独で実行して、削除するファイルのみがリストされていることを確認します。xargs rmこれが確認された後にのみ、 にパイプします。

上記のように使用するとfind、指定された正規表現に一致するファイルを再帰的に検索します。詳細については、find および xargs のマニュアル ページを参照してください。

関連情報