結果内を検索するよりも特定のフォルダ名を検索するコマンド

結果内を検索するよりも特定のフォルダ名を検索するコマンド

共有ホスティング環境でホストされている WordPress サイトが多数あります。すべての WordPress サイトと同様に、「アップロード」ディレクトリがあります。これらのフォルダー内にある悪意のある可能性のあるファイルを定期的に検索したいのですが、もちろん 1 つずつ検索するのはやりたくありません。

質問は、拡張子が「.php」のファイルをすべての「アップロード」ディレクトリから検索するにはどうすればいいかということです。

例えば:

find . -type d -iname "uploads"

ルートディレクトリ内のすべての「アップロード」フォルダを取得しますが、それらのディレクトリ内でも検索したいです

答え1

コマンドの出力を別のコマンドにパイプすることも可能ですが、次のようにして両方の条件を同時に検索することもできます。grepそして正規表現:

find . -type f | grep -i "/uploads/.*\.php$"

使い方:

  • find . -type fリスト全て現在のディレクトリとそのサブディレクトリ内のファイル。

  • grep -i "/uploads/.*\.php$"出力をフィルタリングします:

    • -i大文字と小文字を区別せずに検索します

    • /uploads/.*\.php$行が表示されるために一致する必要がある正規表現です

      • /uploads/ phpまさにそれです

      • .*任意の種類の文字の任意の数の出現である

      • \.文字通り.

      • $列の終わりを知らせる

同じ結果を得ることができます

find . -type f -iregex ".*/uploads/.*\.php"

grepしかし、、Perl、PHP、JavaScript などの正規表現を知っていれば、構文は面倒です。

関連情報