bash – 替换所有文件中的字符串 – Unix

前端之家收集整理的这篇文章主要介绍了bash – 替换所有文件中的字符串 – Unix前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在一批txtfiles中为所有行替换一个字符串::: with ::(它可以被视为一个单词,因为它前面和后面总是有一个空格.

我可以像下面这样使用python来实现它,但是通过unix终端这样做是否有“过度杀戮”/错综复杂的方式? (许多管道允许)

indir = "./td/"
outdir =  './od/'
for infile in glob.glob(os.path.join(indir,"*")):
  _,FILENAME = os.path.split()
  for l in codecs.open(infile,'r','utf8').readlines():
    l = l.replace(":::","::").strip()
    outfile = codecs.open(os.path.join(outdir,FILENAME),'a+','utf8')
    print>>outfile,l

然后我将所有文件从od移动到td mv ./od/* ./td/*

find . -name "./td/*.c" -exec sed -i "s/:::/::/g" '{}' \;

根本不需要od.

编辑:

一个稍微简单的变化:

ls td/*.c | xargs sed -i '' "s/:::/::/g"

猜你在找的Bash相关文章