簡體   English   中英

如何使用Linux CLI查找一行代碼並從特定/目錄中的所有文件中刪除該行

[英]How to find a line of code and delete that line from all files in a certain /directory only, using Linux CLI

所以我用它來查找/目錄中包含代碼“test”的所有文件

grep -R “test” /directory

現在我想一次刪除/ directory中所有文件中找到的代碼。

只檢測它所檢測到的每個文件的代碼行。

更新***

我想刪除注入的代碼@require(dirname(__FILE__).'/php/malware.php');

所以這已經完成但它不起作用。 沒有顯示錯誤消息。 它只接受命令。

grep -l -R '@require(dirname(__FILE__).'/php/malware.php');' /directory | xargs -I {} sed -i.bak 's/@require(dirname(__FILE__).'/php/malware.php');//g' {}

管道文件名應該是sed

grep -l -R “test” /directory | xargs -I {} sed -i '/test/d' {}

哪里:

如果要僅刪除文件的test模式而不是刪除整行,則可以使用以下命令在大多數情況下會破壞代碼

grep -l -R 'test' /directory | xargs -I {} sed -i.bak 's/test//g' {}

它將全局替換測試模式,並在執行操作時備份文件! 你永遠都不會知道 :-)

如果您確定可以刪除包含test模式的整行則可以通過以下方式使用sed:

grep -l -R 'test' /directory | xargs -I {} sed -i.bak '/test/d' {}

您可以在查找備份文件后刪除它們,如果不再需要它們,請使用以下命令:

find /directory -type f -name '*.bak' -exec rm -i {} \;

如果在刪除文件時不需要確認,則可以刪除rm后面的-i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM