2011-12-21 133 views
14

如何在使用shell的文件夾的所有文件上將​​替換爲"abcd"Linux查找並替換

是否可以使用sed命令?

+1

是的,它是可能的。探索手冊頁.... – 2011-12-21 11:05:49

+0

@ Vikram.exe手冊頁沒有解釋有關sed正則表達式的任何內容,儘管 – fge 2011-12-21 11:09:08

+0

@fge,還有一個手冊頁,以及:) 或檢查:http:// linux。 die.net/man/7/regex – 2011-12-21 11:14:14

回答

35

試試下面的命令文件file.txt的:

sed -i 's/abc/abcd/g' file.txt 


嘗試通過以下命令在當前文件夾中的所有文件:

find . -maxdepth 1 -type f -exec sed -i 's/abc/abcd/g' {} \; 

對於文件在當前目錄和所有子目錄:

find . -type f -exec sed -i 's/abc/abcd/g' {} \; 

或者如果你是xargs的風扇:

find . -type f | xargs -I {} sed -i 's/abc/abcd/g' {} 
+0

我需要它爲一個文件夾中的所有文件,而不是單個文件 – 2011-12-21 11:06:50

+0

結帳我編輯;) – kbdjockey 2011-12-21 11:07:55

+1

+1爲查找。因爲如果目錄有subDir,那些sed ... *解決方案將失敗。 – Kent 2011-12-21 11:09:30

1
sed -i 's/abc/&d/g' * 

應該工作。

+0

它也會替換'0abcd','abcd'等 – fge 2011-12-21 11:06:27

+0

是的,這個問題只是說明要取代abc。沒有關於「整個單詞」的說明。 – Nikodemus 2011-12-21 11:07:49

0

是:

find /the/folder -type f -exec sed -i 's,\<abc\>,&d,g' {} \;