我一直在谷歌搜索这个,但是虽然我看到有人使用它们,但我没有看到它的解释。我也尝试过找到并发现"搜索,但再次没有解释这些。 sed man和其他sed指南也没有包含它。
现在,我使用find命令查找多个文件,然后使用sed替换文件中的字符串。我相信这些" {}"和" \;"在sed的末尾是允许sed从查找中获取每个文件名并搜索其文本的内容。但我不想猜测并确切知道它们是什么以及为什么它们会在那里。这是我目前的命令:
output=$(find . -type f -name '*.h' -o -name '*.C' -o -name '*.cpp' -o -name "*.cc" -exec sed -n -i "s/ARG2/ARG3/g" {} \;)
我还担心&#34 ;;"最后可能没有必要,因为我也将它包装起来并将其扔进变量中。有人可以澄清那些曲线和反斜杠在做什么以及我是否需要它们?
编辑:事实证明,他们是find -exec的属性,而不是sed。所以我一直在寻找错误的地方。谢谢!
答案 0 :(得分:3)
find
有两个版本的-exec
操作:
-exec ... {} +
...运行命令...
,最后在结果中添加尽可能多的文件名。
-exec ... {} ';'
...每找到一个文件运行一次...
命令,替换文件名取代{}
sigil;在这种用法中,并非强制要求该行的末尾。
因此,+
或;
需要作为文字参数传递给find
,以使其接受有效的操作。