分页: 1 / 2

批量替换文件中指定字符串? 谢谢! 还有个批量改名没解决

发表于 : 2007-08-08 11:48
richardzhang
我有一个目录记为conn,该目录下又有许多目录和文件,我想把conn下所有目录下的文件的符合有字符串"street+若干空格+star"替换为"street+一个空格+komme"。请问如何实现呢?

比如conn若干层目录下的一个文件里的字符串street+若干空格+star要替换为street+一个空格+komme。
最好用bash实现

发表于 : 2007-08-08 12:05
laborer

代码: 全选

find -type f -exec sed -i 's/street[[:space:]]*star/street komme/' {} \;
别忘了先备份。

发表于 : 2007-08-08 12:06
alinmn
find conn -exec sed -e 's/street\s\+star/street komme/' --in-place '{}' \;

发表于 : 2007-08-08 12:06
alinmn
晕 慢了

发表于 : 2007-08-08 12:11
laborer
晕~~

楼上的,我先看到你回帖说用find+sed,本来都不打算回这个帖子了,因为问题也算解决了。但我之后一刷新,你的回帖居然不见了,我以为是系统问题,于是就回复了一下......

不是故意抢沙发的,呵呵。

发表于 : 2007-08-08 12:12
eexpress
\s都没?

发表于 : 2007-08-08 12:19
bones7456
正则后面得加个g吧~

发表于 : 2007-08-08 12:43
alinmn
我错了 +应该是\+
laborer 你的dc -e后面的串怎么产生的?

发表于 : 2007-08-08 13:10
richardzhang
那么如果在上面的基础上只对后缀为.c的文件做修改如何办呢?谢谢!

发表于 : 2007-08-08 17:42
alinmn
find conn -iname *.c -exec sed -e 's/street\s\+star/street komme/g' --in-place '{}' \;

发表于 : 2007-08-09 1:18
laborer
alinmn 写了:我错了 +应该是\+
laborer 你的dc -e后面的串怎么产生的?

代码: 全选

python -c 'print reduce(lambda a,b: a*256+ord(b), raw_input("Input a string: "), 0)'

发表于 : 2007-08-09 12:26
alinmn
呵呵 我一直在dc的man里面找了 谢了

发表于 : 2007-08-09 17:03
richardzhang
那如果我有一个目录记为conn,该目录下又有许多目录和文件,我想把conn下名字以act为开头的目录和文件名改为以ksaa开头命名,又该如何办呢?
比如一个目录名为actes改为ksaaes,请叫怎么做到?谢谢!

发表于 : 2007-08-09 21:58
eexpress
rename

发表于 : 2007-08-09 22:03
BigSnake.NET
eexpress 写了:rename