我有一個大問題。我試圖從PHP文件第一線在我的項目,但所有的時間恢復控制檯刪除惡意軟件的代碼:Linux發現與sed不工作
的sed:1:「./{PATH_TO_FILE}」:無效的命令代碼。
我的要求:
find . -name "*.php" -type f -exec sed -n -i '1s/.*/<?php/' {} \;
誰能告訴我這裏有什麼問題? :)
非常感謝!
我有一個大問題。我試圖從PHP文件第一線在我的項目,但所有的時間恢復控制檯刪除惡意軟件的代碼:Linux發現與sed不工作
的sed:1:「./{PATH_TO_FILE}」:無效的命令代碼。
我的要求:
find . -name "*.php" -type f -exec sed -n -i '1s/.*/<?php/' {} \;
誰能告訴我這裏有什麼問題? :)
非常感謝!
首先,你沒有把通配符放在「.php」中。它應該是「* .php」。
find . -name "*.php"
其次,你忘了加上佔位的EXEC子句中的文件名和EXEC子句結尾(分號):
三,你sed的表達是無效的。如果你想達到什麼是刪除第一行,「1D」應該讓:
-exec sed -n -i '1d' {} \;
最後,-n似乎與-i干涉,所以只是將其刪除。
你完整的命令應該是:
find . -name "*.php" -type f -exec sed -i '1d' {} \;
好點(結合'-n'和'-i'實際上是_truncates_輸入文件,因爲'-n'禁止所有(隱式)輸出,因此_nothing_被寫回輸入文件。然而,意圖是用'<?php'取代第一行,而不是刪除它,所以它應該是'sed -i'1s /.*/ <?php /''。 – mklement0
非常感謝!最後,我解決了使用命令的問題
LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;
有多少個文件? – user2182349
找。 -name「.php」-type f -exec sed -n -i'1s /.*/ <?php /'{} \; –
在您的問題中發佈完整的命令。 – 123