gpt4 book ai didi

linux - 命令行 : search and replace in all filenames matched by grep

转载 作者:IT老高 更新时间:2023-10-28 12:25:29 26 4
gpt4 key购买 nike

我正在尝试在所有与 grep 匹配的文件中搜索和替换字符串:

grep -n 'foo' * 将以以下形式给我输出:

[filename]:[line number]:[text]

对于 grep 返回的每个文件,我想通过将 foo 替换为 bar 来修改文件。

最佳答案

根据您提供的示例,这似乎是您想要的:

sed -i 's/foo/bar/g' *

它不是递归的(它不会下降到子目录中)。对于在整个树中替换选定文件的一个很好的解决方案,我会使用 find:

find . -name '*.html' -print -exec sed -i.bak 's/foo/bar/g' {} \;

*.html是文件必须匹配的表达式,-i后面的.bak复制原始文件,带有 .bak 扩展名(可以是您喜欢的任何扩展名),并且 sed 表达式末尾的 g 告诉 sed 替换一行上的多个副本(而不仅仅是第一个)。 -print 可以方便地显示正在匹配的文件。这一切都取决于您系统上这些工具的确切版本。

关于linux - 命令行 : search and replace in all filenames matched by grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com