题
使用此组命令,什么是{}和\;为字符?
find . -name '*.clj' -exec grep -r resources {} \;
解决方案
请参阅人发现。 (特别是约-exec
的部分)
当使用-exec
运行在每个找到的文件的命令时,{}
被替换为每个文件的找到的名称,并且该命令被通过\;
终止
在你的榜样,当前目录(.
)下找到的所有文件,匹配名称*.clj
将会对他们的命令grep -r resources
运行(查找的字符串resources
如果在每个这些文件的存在)。
这其实有些多余,因为-r
是递归搜索子目录,而这正是find
已经在做。
其他提示
在查找中,-exec参数抓住参数的其余部分向上TIL的; (分号),其具有进行转义,因此\ ;.在该跨度,{}被替换的文件名被检查。
考虑该备选命令,我发现更易于理解:
find . -name *.clj | xargs grep -r resources
在字符串“{}”将被当前文件替换正在处理中。逸出的分号终止用于-exec选项的命令参数。
在{}
字符串find
由当前文件的路径名所取代。
分号用于终止由find
工具调用的外壳命令。
有需要转义,或引用,因此它不会受到壳来解释,因为;
是由外壳所使用的特殊字符中的一个(列表运算符)。
不隶属于 StackOverflow