在linux替换目录,关于linux:在目录和子目录中查找并替换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

你能运行find ./并发布一些样本输出吗?还有目录结构。编辑:谢谢!

嗯,你的发现是正确的,适合我和细分市场。

你怎么知道它不处理子目录?

因为它会出现以下错误:sed:无法编辑。/fpd:非常规文件sed:无法编辑。/fpd/font:非常规文件sed:无法编辑。/fpd/font/makefont:非常规文件sed:无法编辑。/fpd/font/makefont:非常规文件

哦。。。我为苹果喝醉了,却什么也没找到。他们都被替换了。谢谢。你睁开了我的眼睛!!!!

awk/sed的可能副本:如何递归查找/替换字符串?

如果使用zsh,可以使用例如src/**/.js。

你可以在这里找到答案:stackoverflow.com/a/49364510/5578292

为避免向SED发送目录名,您的搜索结果应如下所示:

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

您可能需要将sed -i 's/apple/orange/g'更改为sed -i '' 's/apple/orange/g',以使其正常工作。

-i接受一个参数:用于保存临时文件的扩展名。在gnu-sed中,似乎-i与其论点之间没有空格,但在bsd-sed中有……所以bsd--i '' 's/foo/bar/'相当于gnu--i 's/foo/bar/。

实际上,添加-e在mac操作系统上不起作用。touch a b c d e后面跟着上面的命令生成这样的目录列表:a a-e b b-e c c-e d d-e e e-e。

对于Mac OS,这将回答stackoverflow.com/questions/19242275/…the RE error: illegal byte sequence。

对于鱼壳用户,一定要引用空支架'{}',因为如果没有引用,fish会自动扩展空支架。

这个有较短的版本吗?相当长。或者一种使其成为别名/bash函数的方法?

对于较大的S&R任务,使用grep和xargs更好更快,因此,例如;

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

谢谢你的回答,非常有帮助!如果在Git存储库中,使用git grep -l 'apples' | xargs sed -i 's/apples/oranges/g'会更快。

这对我很有用:

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

原始问题不限于*.php文件,还有一个.ini文件

grep -e apple your_site_root/**/*.* -s -l | xargs sed -i"""s|apple|orage|"

我想我们可以用一行简单的命令

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

请参阅本页。

mywiki.wooledge.org/dontreadlineswithfor

在LIUXOS:

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

如果"SED"不工作,请尝试:

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

他希望找到子目录中包含该字符串和替换的所有文件,而不仅仅是一个文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值