提高效率
当。。。的时候 执行 使用 action 时,它会在每次找到匹配文件时启动指定命令的新实例。 有时我们可能更喜欢组合所有搜索结果并启动命令的单个实例。 例如,而不是执行这样的命令:
ls -l file1
ls -l file2
我们可能更愿意以这种方式执行它们:
ls -l 文件 1 文件 2
从而导致命令只执行一次而不是多次。 我们有两种方法可以做到这一点。 传统方式,使用外部命令 参数 和另一种方式,使用新功能 发现 本身。 我们将首先讨论替代方式。
通过将结尾的分号字符更改为加号,我们可以激活 发现 将搜索结果组合到一个参数列表中,以便单次执行所需的命令。 回到我们的例子,这个:
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
-rwxr-xr-x 1 我
-rw-r--r-- 1 我
-rwxr-xr-x 1 我
-rw-r--r-- 1 我
我 224 2007-10-29 18:44 /home/me/bin/foo
我 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/me/foo.txt
0 2016-09-19 12:53 /home/me/foo.txt
将执行 ls 每次找到匹配的文件时。 通过将命令更改为:
find ~ -type f -name 'foo*' -exec ls -l '{}' +
find ~ -type f -name 'foo*' -exec ls -l '{}' +
-rwxr-xr-x 1 我
-rw-r--r-- 1 我
-rwxr-xr-x 1 我
-rw-r--r-- 1 我
我 224 2007-10-29 18:44 /home/me/bin/foo
我 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/me/foo.txt
0 2016-09-19 12:53 /home/me/foo.txt
我们得到相同的结果,但系统只需要执行 ls 命令一次。