我的平台:Ubuntu Linux工作站
在一个目录中,我有一系列文件,文件名为xxx_1.in到xxx_50.in
对于每个文件,我想将abc替换为def。如果我逐个进行操作,我应该输入:g/abc/s//def/g
如何编写脚本来一次性处理所有文件?
sed -i 's/abc/def/g' xxx_*.in
应该足够了
我喜欢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
"$f"
。 - rlibby
abc
为def
,还是在文件名中替换?我两个都会做。 - Blender