我运行此命令来查找我的站点根目录下所有文件中出现的所有“apple”,并将其替换为“橙子”:
find ./ -exec sed -i 's/apple/orange/g' {} \;
但它不通过子目录。这个命令有什么问题吗?下面是find ./的一些输出行:
find ./
./index.php ./header.php ./fpd ./fpd/font ./fpd/font/desktop.ini ./fpd/font/courier.php ./fpd/font/symbol.php
wydwbb8l1#
您的find应该如下所示,以避免将目录名发送到sed:
find
sed
find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;
3df52oht2#
对于较大的s&r任务,使用grep和xargs会更好、更快,例如;
grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'
fjnneemd3#
因为也有macOS的人在阅读这篇文章(就像我一样),下面的代码对我很有效(在10. 14)
egrep -rl '<pattern>' <dir> | xargs -I@ sed -i '' 's/<arg1>/<arg2>/g' @
使用-i和-e的所有其他答案在macOS上不起作用。来源
-i
-e
aiqt4smr4#
这对我很有效:
find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
xe55xuns5#
grep -e apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|apple|orange|"
dl5txlt96#
找到了一个很棒的程序,叫做ruplacerhttps://github.com/dmerejkowsky/ruplacer用途
ruplacer
ruplacer before_text after_text # prints out list of things it will replace ruplacer before_text after_text --go # executes the replacements
它也尊重.gitignore,所以它不会弄乱你的.git或node_modules目录(默认情况下,find .会进入你的.git目录,并可能损坏它!!!)
.gitignore
.git
node_modules
find .
z9smfwbn7#
我想我们可以用一行简单命令来完成
for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done
请参阅page。
hivapdat8#
在linux操作系统中:
sed -i 's/textSerch/textReplace/g' namefile
如果“sed”不起作用,请尝试:
perl -i -pe 's/textSerch/textReplace/g' namefile
8条答案
按热度按时间wydwbb8l1#
您的
find
应该如下所示,以避免将目录名发送到sed
:3df52oht2#
对于较大的s&r任务,使用grep和xargs会更好、更快,例如;
fjnneemd3#
因为也有macOS的人在阅读这篇文章(就像我一样),下面的代码对我很有效(在10. 14)
使用
-i
和-e
的所有其他答案在macOS上不起作用。来源
aiqt4smr4#
这对我很有效:
xe55xuns5#
dl5txlt96#
找到了一个很棒的程序,叫做
ruplacer
https://github.com/dmerejkowsky/ruplacer
用途
它也尊重
.gitignore
,所以它不会弄乱你的.git
或node_modules
目录(默认情况下,find .
会进入你的.git目录,并可能损坏它!!!)z9smfwbn7#
我想我们可以用一行简单命令来完成
请参阅page。
hivapdat8#
在linux操作系统中:
如果“sed”不起作用,请尝试: