我在 Ubuntu 22.04 上的一个文件夹中有超过 200 个文件。我想在这些中搜索特定文本。如果找到该文本,则应将其替换为其他文本。我怎样才能实现这个目标?
Rin*_*ind 15
基本版本是:
sed --in-place 's/foo/bar/g' *
Run Code Online (Sandbox Code Playgroud)
这将s搜索foo并将其更改为bar g全局。该--in-place标志会更改实际文件,因此请小心使用。如果添加后缀 ( --in-place=bak),则会生成扩展名为“bak”的备份文件。
如果有特殊字符(而且有很多),则需要对其进行转义。我无法比吉尔斯更好地解释这一点:https://unix.stackexchange.com/a/33005/10017
还有一个名为rpl(替换文件中的字符串)的工具可以使其更容易(使用:安装它sudo apt install rpl),您可以使用它执行以下操作:
rpl --dry-run 'foo' 'bar' '*/*.*'
Run Code Online (Sandbox Code Playgroud)
上面的命令只会模拟(试运行)操作,因此它将显示您的文件将发生哪些更改,但它不会应用这些更改。如果您对所得到的结果感到满意,请运行不带标志的命令--dry-run:
rpl 'foo' 'bar' '*/*.*'
Run Code Online (Sandbox Code Playgroud)