以下面的命令为例:
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
分面两部分,第一部分:
find ~ -type f -name 'foo*'
即按照通配符foo*
查找用户目录下的 regular files。第二部分:
-exec ls -l '{}' ';'
-exec
是一条件命令,{}
代表查找到的文件的路径,对这些路径下的文件执行操作ls -l
,最后用一个;
符号结束。
这里{}
和;
都要放在单引号里,是因为括号和冒号在 shell 中都有特定含义,放入单引号之后按字面意思执行。
这条命令也可以改成:
find ~ -type f -name 'foo*' -exec ls -l '{}' +
两条命令的效果相同,不同点在于,以;
结尾的话,相当于ls -l
对返回的每个查找结果都执行一次; 以+
结尾的话,相当于把所有查找到的结果用ls -l
命令一次性执行。在效率上有区别。