現在サーバーに問題があります。複数のウェブサイトをホストしているユーザーがハッキングされ、彼のPHPファイルの一部が修正されました。今、感染したファイルのリストを取得したいと彼が全体の混乱を治療したことを確認したいと思います。
感染したファイルの共通点は、最初の行が非常に長いことです。だから私はサーバー上の最小長が1000文字のすべてのPHPファイルを見つけたいと思います。
さて、「find」を使用してすべてのPHPファイルを見つけることができ、「head -n 1」を使用して最初の行を取得し、「wc -m」を使用して文字数を計算できます。
しかし、どのように組み合わせることができますか?
答え1
find
以下を使用してこれを実行できますawk
。
find . -type f -name '*.php' -size +1000c -exec awk '
FNR > 1 {nextfile}
length >= 1000 {print FILENAME}' {} +
スクリプトawk
は、各ファイルの最初の行の後にある次のファイルに移動します。現在の行の長さが1000文字を超えると、現在のファイルのファイル名が印刷されます。
答え2
find
以下を試してみてくださいgrep
。
探す。 -type f -name '*.php' -exec grep '.\{1000\}' {}+