简单的unix命令,什么是{}和\;对于

时间:2009-01-15 14:56:28

标签: unix find command

使用这组命令,{}和\是什么?字符为?

find . -name '*.clj' -exec grep -r resources {} \;

5 个答案:

答案 0 :(得分:27)

man find。 (特别是关于-exec)的部分

使用-exec对找到的每个文件运行命令时,{}将替换为找到的每个文件的名称,命令由\;终止

在您的示例中,在当前目录(.)下找到的与名称*.clj匹配的所有文件都将运行命令grep -r resources(以查找字符串{{1如果它存在于每个文件中)。

它实际上有点多余,因为resources用于递归搜索子目录,而-r已经在做什么。

答案 1 :(得分:2)

在find中,-exec参数获取其余参数直到; (分号)必须逃脱,因此\;。在此范围内,{}将替换为正在检查的文件名。

答案 2 :(得分:2)

考虑这个替代命令,我觉得这个命令更容易理解:

find . -name *.clj | xargs grep -r resources 

答案 3 :(得分:1)

字符串“{}”将被正在处理的当前文件替换。转义的分号终止-exec选项的命令参数。

答案 4 :(得分:0)

{}中的字符串find将替换为当前文件的路径名。

分号用于终止find实用程序调用的shell命令。

它需要被转义或引用,因此它不会被shell解释,因为;是shell(列表运算符)使用的特殊字符之一。

另请参阅:Why are the backslash and semicolon required with the find command's -exec option?

相关问题