在目录和子目录中查找并replace为sed

我运行这个命令,在我的网站的根目录下的所有文件中查找并replace所有出现的“apple”和“orange”:

find ./ -exec sed -i 's/apple/orange/g' {} \; 

但它不通过子目录。

这个命令有什么问题?

编辑:这里是一些find ./命令的输出行:

 ./index.php ./header.php ./fpd ./fpd/font ./fpd/font/desktop.ini ./fpd/font/courier.php ./fpd/font/symbol.php 

你的发现应该是这样的,以避免发送目录名称为sed:

 find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \; 

对于更大的S&R任务,使用grep和xargs会更好更快,所以,例如;

 grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g' 

这对我工作:

 find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \; 

我想我们可以用一行简单的命令来做到这一点

 for i in `grep -rl eth0 . 2> /dev/null`; do sed -i 's/eth0/eth1/' $i; done 

参考页面: http : //www.geekpills.com/operating-system/linux/search-and-replace-with-sed-in-directory-and-sub-directories/1694/

在linuxOS中:

 sed -i 's/textSerch/textReplace/g' namefile 

如果“sed”不工作尝试:

 perl -i -pe 's/textSerch/textReplace/g' namefile