2011-04-21 61 views
2

我的平台:Ubuntu Linux操作系统的工作站如何在Ubuntu Linux中搜索文件内的内容?

在一个目录,我havea一系列文件,具有文件名xxx_1.in到xxx_50.in

对于每一个文件,我想更换农行业。如果我单独做,我应该输入:g/abc/s // def/g

如何编写一个脚本来一次处理所有文件?

+0

我清理了一些语法和明确的称号。 – cdeszaq 2011-04-21 15:09:07

+0

你是否用文件内容或名称中的'def'替换'abc'?我会做两个。 – Blender 2011-04-21 15:10:03

回答

5
sed -i 's/abc/def/g' xxx_*.in 

应该足够

0

我喜欢Python,即使是shell脚本。我真的不能弄清楚如何使用sed,所以我坚持到Python的搜索和替换:

#!/usr/bin/env python 
import os, glob 

for filename in glob('xxx_*.in'): 
    os.rename(filename , filename .replace('abc', 'def')) 

所以作为运行时您复制/粘贴到终端(我没有一个Python联脚本我目前的机器,所以没有保证),

python -c "import os, glob; eval('for f in glob(\'xxx_*.in\'):\n os.rename(filename , filename .replace(\'abc\', \'def\'))'" 

上好像你的意思是该文件的内容,我可以不用做的Python(希望这个工程):

for f in xxx_*.in; do sed s/abc/def/g "$f"; done 
+0

请确保引用文件名变量,如''$ f“'中所示。 – rlibby 2011-04-21 15:17:30

+0

哎呀,谢谢你的注意。我修复了它。 – Blender 2011-04-21 15:18:08