2017-03-13 8 views
0

以下のコードを実行してマルウェアを削除します。パイプで拡張して、以下の文字列を含むファイルを削除できるようにします(grepによる結果の削除)。Grep and delete file

grep -rnw . -e "ALREADY_RUN_1bc29b36f342a82aaf6658785356718" 

これは、ファイル

./gallery.php:2:if (!defined('ALREADY_RUN_1bc29b36f342a82aaf6658785356718')) 
./gallery.php:4:define('ALREADY_RUN_1bc29b36f342a82aaf6658785356718', 1); 
./wp-includes/SimplePie/HTTP/db.php:2:if (!defined('ALREADY_RUN_1bc29b36f342a82aaf6658785356718')) 
./wp-includes/SimplePie/HTTP/db.php:4:define('ALREADY_RUN_1bc29b36f342a82aaf6658785356718', 1); 
./wp-includes/SimplePie/Parse/template.php:2:if (!defined('ALREADY_RUN_1bc29b36f342a82aaf6658785356718')) 
./wp-includes/SimplePie/Parse/template.php:4:define('ALREADY_RUN_1bc29b36f342a82aaf6658785356718', 1); 
./wp-includes/SimplePie/XML/file.php:2:if (!defined('ALREADY_RUN_1bc29b36f342a82aaf6658785356718')) 
+0

'-g'オプションに' -l'オプションを指定すると、ファイル名だけが表示されます。 –

+0

@GregoryNisbet -lを使用すると、rm -rfでどのように実行するのですか? –

答えて

1

のリストを返すここで彼らは標準入力からリストされているとして、ファイルを処理するxargsを使用してソリューションです。

Grepはパターンのために.の内容を再帰的に検索します(あなたは正規表現の機能を使用していないようですので、固定文字列の場合は-Fに変更しました)。

ファイルを削除する単純なスクリプトですが、ファイル名の改行を含むすべての改行で分割されることに注意してください。

$ grep -rl -F "ALREADY_RUN_1bc29b36f342a82aaf6658785356718" . | \ 
    xargs -I'{}' rm '{}' 

完全を期すために、ここでは関係なく、ファイル名の動作するコマンドです(私たちはパスが./で始まる必要があります知っているので、rmを使用しても安全である)

$ find . -type f -exec \ 
    /bin/sh -c 'grep -q -F "$0" "$1" && rm "$1"' 'ALREADY_RUN_1bc29b36f342a82aaf6658785356718' '{}' \; 

と複数のファイルを削除します一度。

$ find . -type f -exec \ 
    /bin/sh -c 'grep -q -F "$0" "[email protected]" && rm "[email protected]"' 'ALREADY_RUN_1bc29b36f342a82aaf6658785356718' '{}' +