私は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
NULL終了パラメータが必要なため、これが出力に適用されないことですgrep -l
。-0
ファイル名にスペースが含まれていない場合は、削除するだけで機能します。
grep -l '@error' * | xargs sed -i 's/error/nothing/g'
答え2
grep -l @error * | xargs sed -i s/error/test/g
動作します。