我运行这个命令,在我的站点根目录下的所有文件中找到并替换'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
我运行这个命令,在我的站点根目录下的所有文件中找到并替换'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
当前回答
我认为我们可以用一行简单的命令做到这一点
for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done
请参阅本页。
其他回答
对于较大的s&r任务,使用grep和xargs更好更快,因此,例如;
grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'
我认为我们可以用一行简单的命令做到这一点
for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done
请参阅本页。
这招对我很管用:
find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
你的find应该是这样的,以避免将目录名发送到sed:
find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;
在linuxOS:
sed -i 's/textSerch/textReplace/g' namefile
如果“sed”不工作,尝试:
perl -i -pe 's/textSerch/textReplace/g' namefile