简单的unix命令,什么是{}和\; 对于
用这组命令,什么是{}和\; 字符为?
find . -name '*.clj' -exec grep -r resources {} \;
见男人找 。 (特别是关于-exec
的部分)
当使用-exec
在每个find的文件上运行一个命令时, {}
被replace为find的每个文件的名字,命令被\;
终止\;
在你的例子中,在当前目录( .
)下find的与*.clj
名称匹配的所有文件都会有grep -r resources
运行(findstringresources
如果每个文件都存在的话)。
这实际上有些多余,因为-r
是recursionsearch子目录,这就是find
已经在做的事情。
在find中,-exec参数抓取了其余的参数, (分号)必须逃脱,因此\\。 在此范围内,{}将被replace为正在检查的文件名。
考虑一下我觉得更容易理解的替代命令:
find . -name *.clj | xargs grep -r resources
string“{}”将被正在处理的当前文件replace。 转义的分号终止-exec选项的命令参数。
find
的string{}
将被当前文件的path名取代。
分号用于终止find
实用程序调用的shell命令。
它需要被转义或引用,所以它不会被shell解释,因为;
是shell(列表操作符)使用的特殊字符之一。
另请参阅: find命令的-exec选项为什么需要反斜杠和分号?