2009-12-23 25 views
1

如何以每個帶擴展名.cc和.h的文件遞歸地替換另一個模式?不知道我是否需要阻止它進入.svn目錄。在linux/osx上搜索並替換整個項目

第一次嘗試

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

回答

2

如果你的項目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文件中有「*鹼基」擴展,使所有的人都將保持不變。該腳本只會影響* h和* cc文件。

+0

不起作用。我究竟做錯了什麼? #!/ bin/bash 用於文件查找。 -name'* .cc'-or -name'* .h'; \ sed -i s/$ 1/$ 2/g $文件 完成 – 2010-01-07 23:12:35

+0

您在$ file之後和'done'命令之前忘記了分號。 分號是必需的,因爲您的命令在一行中。 這是正確的版本: #!/ bin/bash用於文件查找。 -name'* .cc'-or -name'* .h'; do \ sed -i s/$ 1/$ 2/g $ file; DONE – kokosing 2010-01-09 10:09:23

0

您可以搜索,並通過在Eclipse項目資源管理器中的某些文件使用正則表達式,例如替換。我確信有很多工具可以做到這一點,但Elipse首先想到。

要做到這一點,你需要調用「搜索」對話框中,將你的模式在搜索字段中,指定使用通配符,然後按「替換」的擴展,