Linux サーバー上でマルウェアに遭遇したので、多くの PHP ファイルからそれを削除しようとしています。
grep | sed と grep | tr を何度も試しましたが、単純なテキスト文字列を消去することすらできず、さまざまなエラーが発生しました。
試すとき:
grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'
次のエラーメッセージが表示されます:
読めないファイル名.php
Mac でターミナルを使用する - OSX 構文の問題でしょうか?
最後のタスクは、すべてのファイルから長いコード文字列を削除することです。その中には、$、!、?、<、>、\、" などの記号が含まれていますが、バックスラッシュを付ける必要はありますか?
答え1
バックアップまたはソース管理から復元する必要があります。@マットそうしないと、すべてをクリーンアップしたことを 100% 確信できないため、これを推奨します。
コマンドの問題は-0
のフラグですxargs
。この方法でxargs
はヌルで終了する引数が想定されるため、 の出力では機能しませんgrep -l
。 を削除する-0
だけで、ファイル名に空白が含まれていない限り機能します。
grep -l '@error' * | xargs sed -i 's/error/nothing/g'
答え2
grep -l @error * | xargs sed -i s/error/test/g
働くでしょう。