2008-09-23 115 views

回答

5

試試這個

find . -type f | while read file 
do 
    grep development $file && echo "modifying $file" && perl -i.bak -p -e 's(http://development)(http://prodution)g' $file 
done 

希望這有助於。

+0

請注意,舊文件將保存爲* .bak,它間接滿足要求:「打印出修改過的文件」。 – 2008-09-23 23:04:00

2

這聽起來像你會從間接層獲益。 (但那麼,誰不會呢?)

我在想你可以在一個位置有特殊的字符串。在運行時引用配置設置,或在構建時使用正確的字符串生成這些文件。稍有更多的反饋

find . -type f | xargs grep -l development | xargs perl -i.bak -p -e 's(http://development)(http://production)g' 

另一種方法:

6

找到。 -type f | xargs sed -i s/pattern/replacement/g

+0

額外的注意:你必須在模式中用反斜槓來引號:... sed -i s/\「hello \」/ hi/g – nickf 2009-01-05 02:35:09

0

使用zsh所以對於高級globing,只能使用一個命令。 例如: -

sed -i 's:pattern:target:g' ./** 

HTH

1

不要試圖在上述範圍內工作的svn/cvs的目錄,因爲它也將修補的.svn /將該.cvs,這絕對不是你想要的。例如,要避免.svn修改,請使用find。 -type f | fgrep -v .svn | xargs sed -i's/pattern/replacement/g'

相關問題