查找并替换整个目录问题的命令

时间:2011-10-07 08:49:28

标签: c linux shell replace

看到我有一个jig.c文件,我有声明,如

mkvFree(jig);

现在我使用了以下命令进行查找和替换

find /home/jeegar/jig.c -type f -exec sed -i 's/mkvFree(/mkvFree((void**)&/g' {} \;

通过此命令,我希望输出为

mkvFree((void**)&jig);

但是我得到了像

这样的输出
mkvFree((void**)mkvFree(jig);

我的命令怎么了?

修改:

我从https://superuser.com/questions/324428/find-and-replace-command-for-whole-directory

接受了此命令

2 个答案:

答案 0 :(得分:6)

你需要逃避\&字符:

find /home/jeegar/jig.c -type f -exec \
       sed -i 's/mkvFree(/mkvFree((void**)\&/g' {} \;

&字符将替换模式的整个匹配输入。

答案 1 :(得分:2)

&是替换表达式中的元字符,意思是“整个搜索字符串”。引用它,它应该工作。