Linux 中是否有任何命令可以在給定目錄及其下面的資料夾中的所有檔案中查找特定單字並用新單字取代它?
答案1
這將替換所有文件。如果您只需要特定類型的文件,則可以使其更加具體。此外,它還會.bak
為其處理的每個文件建立備份文件,以備您需要在恢復時使用。如果您根本不需要備份文件,請更改-i.bak
為-i
.
find /path/to/directory -type f -exec sed -i.bak 's/oldword/newword/g' {} \;
要在不再需要時刪除所有備份檔案:
find /path/to/directory -type f -name "*.bak" -exec rm -f {} \;
答案2
您可以使用以下命令:
grep -lR "foo" /path/to/dir | xargs sed -i 's/foo/bar/g'
它用於grep
查找包含字串“foo”的文件,然後調用 sed 將其中的“foo”替換為“bar”。結果,只有那些包含「foo」的檔案被修改。其余文件未受影響。
答案3
不是單一命令,而是多個命令的組合:
find /home/bruno/old-friends -type f -exec sed -i 's/ugly/beautiful/g' {} ;
範例來自這裡