2015-10-14 64 views
0

我有一個大問題。我試圖從PHP文件第一線在我的項目,但所有的時間恢復控制檯刪除惡意軟件的代碼:Linux發現與sed不工作

的sed:1:「./{PATH_TO_FILE}」:無效的命令代碼。

我的要求:

find . -name "*.php" -type f -exec sed -n -i '1s/.*/<?php/' {} \; 

誰能告訴我這裏有什麼問題? :)

非常感謝!

+0

有多少個文件? – user2182349

+0

找。 -name「.php」-type f -exec sed -n -i'1s /.*/ <?php /'{} \; –

+0

在您的問題中發佈完整的命令。 – 123

回答

2

首先,你沒有把通配符放在「.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' {} \;

+0

好點(結合'-n'和'-i'實際上是_truncates_輸入文件,因爲'-n'禁止所有(隱式)輸出,因此_nothing_被寫回輸入文件。然而,意圖是用'<?php'取代第一行,而不是刪除它,所以它應該是'sed -i'1s /.*/ <?php /''。 – mklement0

0

非常感謝!最後,我解決了使用命令的問題

LC_ALL=C find . -name "*.php" -type f -exec sed -i '' -e "s/^<\?php.*\?>//" {} \;