在目录和子目录中查找并用 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
I run this command to find and replace all occurrences of 'apple' with 'orange' in all files in root of my site:
find ./ -exec sed -i 's/apple/orange/g' {} \;
But it doesn't go through sub directories.
What is wrong with this command?
Here are some lines of output of find ./
:
./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
您的
find
应该如下所示,以避免将目录名称发送到sed
:Your
find
should look like that to avoid sending directory names tosed
:对于较大的 s&r 任务,使用 grep 和 xargs 更好更快,因此,例如;
For larger s&r tasks it's better and faster to use grep and xargs, so, for example;
由于也有 macOS 人员阅读这篇文章(就像我一样),因此以下代码对我有用(在 10.14 上)
使用
-i
和-e
的所有其他答案都不起作用在 macOS 上工作。来源
Since there are also macOS folks reading this one (as I did), the following code worked for me (on 10.14)
All other answers using
-i
and-e
do not work on macOS.Source
这对我有用:
This worked for me:
找到了一个很棒的程序,名为
ruplacer
https://github.com/dmerejkowsky/ruplacer
用法
它也尊重
.gitignore
因此它不会弄乱您的.git
或node_modules
目录(find .
默认情况下会进入您的 .git 目录并可能损坏它!!!)Found a great program for this called
ruplacer
https://github.com/dmerejkowsky/ruplacer
Usage
It also respects
.gitignore
so it won't mess up your.git
ornode_modules
directories (find .
by default will go into your .git directory and can corrupt it!!!)我认为我们可以用一行简单的命令来完成此操作
请参阅此 页面。
I think we can do this with one line simple command
Refer to this page.
在 linuxOS 中:
如果“sed”不起作用,请尝试:
In linuxOS:
if "sed" not work try :