我正在尝试用:::
替换一个txtfiles中的所有行的::
字符串(它可以被视为一个单词,因为它前面和后面总是有空格。
我可以像下面这样使用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/*
答案 0 :(得分:19)
find . -name "./td/*.c" -exec sed -i "s/:::/::/g" '{}' \;
根本不需要od/
。
修改
稍微简单的变化:
ls td/*.c | xargs sed -i '' "s/:::/::/g"
答案 1 :(得分:3)
使用sed
处理每个文件的简单循环应该足够了。
for inp in ./td/*; do
fname=${inp##*/}
sed 's/:::/::/g' "$inp" > ./od/"$fname"
done