我试图在一批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"