要在当前目录中具有特定扩展名的所有文件中替换所有出现的单词,我使用此命令:
find . -type f -name '*.zz' -exec sed -i '' "s/replace_this/with_this/" {} +
问题是它将\n
添加到未以\n
结尾的文件的末尾。现在不要误会我的意思,我喜欢\n
终止文件和下一个人一样多。但是我不想在我的git diff中进行所有这些更改。什么是运行的命令,它可以做同样的事情但不触及文件结尾?
顺便说一句,我正在使用emacs与建议 - 射弹,所以如果有一个方便的工具,那就没关系了。
macOS 10.13.4
答案 0 :(得分:1)
尝试perl
派而不是sed
,使用以下内容:
perl -pi -e 's/replace_this/with_this/"
在你的情况下:
find . -type f -name '*.zz' -exec perl -pi -e "s/replace_this/with_this/" {} +