在目录和子目录中查找并替换为sed

我运行以下命令以查找并替换网站根目录中所有文件中所有出现的“ 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


繁星淼淼
浏览 647回答 3
3回答

四季花海

您的发现应该看起来像这样,以避免将目录名称发送到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 {} \;
打开App,查看更多内容
随时随地看视频慕课网APP