【发布时间】:2016-08-09 15:37:36
【问题描述】:
我有一个使用find 的脚本。到目前为止,我一直很好地使用 -exec 来完成我需要做的事情,但我现在遇到了一些障碍。
如果找到文件,我想执行一个命令一次(所以-exec {} \;不是我要找的),这是一个不接受任何文件的命令参数,所以-exec {} \+ 将不起作用(或者至少它不适用于我的 FreeBSD 10.1 系统上的 find 版本。
最好的方法是什么?
【问题讨论】:
我有一个使用find 的脚本。到目前为止,我一直很好地使用 -exec 来完成我需要做的事情,但我现在遇到了一些障碍。
如果找到文件,我想执行一个命令一次(所以-exec {} \;不是我要找的),这是一个不接受任何文件的命令参数,所以-exec {} \+ 将不起作用(或者至少它不适用于我的 FreeBSD 10.1 系统上的 find 版本。
最好的方法是什么?
【问题讨论】:
您需要将文件名通过管道传送到xargs。
我想我在这里错过了一个重要线索:您的命令对文件名不感兴趣。所以你只想运行一个命令if files were found?在这种情况下,您可以尝试以下方法:
find -name nosuchfile | if read; then echo "hello"; fi;
【讨论】:
-quit 主要可以与-exec 结合使用,-quit 存在于 BSD 和 GNU find 实现中。下面的示例旨在确保find 在第一次匹配后终止,而不管实用程序的退出状态如何。
find path... [expression] \( -exec utility \; -quit -or -quit \)
【讨论】: