2011-12-21 119 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' {} \;