Replace 在linux/osx上搜索并替换整个项目

Replace 在linux/osx上搜索并替换整个项目,replace,Replace,对于扩展名为.cc和.h的每个文件,如何递归地用一种模式替换另一种模式?不确定是否需要阻止它进入.svn目录 第一次尝试 #!/bin/bash for file in `find . -name '*.cc' -or -name '*.h'`; do \ sed -e s/$1/$2/g -i temp $file done 例如,您可以通过Eclipse项目资源管理器中的某些文件使用正则表达式进行搜索和替换。我相信有很多工具可以做到这一点,但首先想到的是Elipse 为此,您需要

对于扩展名为.cc和.h的每个文件,如何递归地用一种模式替换另一种模式?不确定是否需要阻止它进入.svn目录

第一次尝试

#!/bin/bash
for file in `find . -name '*.cc' -or -name  '*.h'`; do \
    sed -e s/$1/$2/g -i temp $file
done

例如,您可以通过Eclipse项目资源管理器中的某些文件使用正则表达式进行搜索和替换。我相信有很多工具可以做到这一点,但首先想到的是Elipse


为此,您需要调用“搜索”对话框,将模式放在搜索字段中,用通配符指定扩展名,然后按“替换”,如果您的项目是在linux平台下管理的,您可以在bash中执行类似操作:

for file in `find . -name '*.cpp' -or -name  '*.h'`; do \
     cat $file | sed s/$1/$2/g > tmp
     mv tmp $file
done

每个svn文件都有'*-base'扩展名,因此所有文件都将保持不变。此脚本只影响*h和*cc文件。

不起作用。我做错了什么/用于文件查找的bin/bash-名称'.cc'-或-name'.h';do\sed-i s/$1/$2/g$file doneYou忘记了$file后面和'done'命令之前的分号。因为您的命令在一行中,所以需要分号。这是正确的版本:#/用于文件查找的bin/bash-名称'.cc'-或-name'.h';do\sed-i s/$1/$2/g$文件;完成