2011-02-24 256 views

回答

2

您可以使用find遍歷查找文件的子目錄,然後將它們傳遞到sed以搜索並替換文本。

例如

find /some/directory -type f -name "*.txt" -print -exec sed -i 's/foo/bar/g' {} \; 

會找到所有的txt文件,並用它們替換foo。

-i使sed在原地更改文件。如果您希望在更改之前備份文件,還可以爲sed提供備份後綴。

+0

沒有必要使用'-print'和你使用了錯誤的模式對'-name' – kurumi 2011-02-24 10:38:36

+0

你可以如果您想創建備份文件(在這種情況下爲'.bak'擴展名),請使用'-i.bak'。 – 0xC0000022L 2011-02-24 16:00:22

0
for n in $(find | grep txt$) 
do 
    echo $n 
    modify_content.sh $n 
done 
1

GNU找到

find /some_path -type f -name "*.txt" -exec sed -i 's/foo/bar/g' "{}" +; 
+0

...和GNU sed – 2011-02-24 17:09:57

相關問題