2016-12-21 30 views
6

我試圖擺脫我的一些wordpress安裝上的黑客問題。需要刪除前N行grep結果文件

這傢伙在我的服務器上的多個文件頭放9行代碼...我試圖用grep和sed來解決這個問題。

我試着:

grep -r -l "//360cdn.win/c.css" | xargs -0 sed -e '1,9d' < {} 

但什麼也沒發生,如果我刪除-0 from xargs的, the result of the files found are clean, but they are not overwriting the origin file with the sed`結果,任何人都可以幫我嗎?

非常感謝!

回答

2

您應該使用grep命令中的--null選項在grep輸出中的每個文件名之後輸出NUL字節或\0。還可以使用-i.baksed爲每個文件的內聯編輯:

grep -lR --null '//360cdn.win/c\.css' . | xargs -0 sed -i.bak '1,9d' 
+1

非常感謝你!我試圖解決這個過去的4小時! = D –

+1

@RenanCorrêaPinto在[so]上說「thank you」的方式是*接受*(和/或* upvoting *)答案。 –

0

這有什麼錯遍歷文件directly¹?

,你可能希望將-i平坦添加到的sed使文件編輯正地方

grep -r -l "//360cdn.win/c.css" | while read f 
do 
    sed -e '1,9d' -i "${f}" 
done 

¹好,你可能會得到的問題,如果你的文件包含換行符之類。 但是然後...如果您的網站包含換行符的文件,您可能無論如何有其他問題...