我在 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
將工作。