如果找到匹配文件,请执行一次命令

时间:2016-04-18 03:06:16

标签: bash shell find freebsd

我有一个使用find的脚本。到目前为止,我一直很好地使用-exec来完成我需要做的事情,但我现在遇到了一些障碍。

如果找到文件,我想执行命令一次(所以-exec {} \;不是我正在寻找的),这是一个不带任何命令的命令文件作为参数,因此-exec {} \+将不起作用(或者至少它不适用于我的FreeBSD 10.1系统上的find版本。

这样做最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

您需要将文件名传递给xargs

我想我错过了一个重要的线索:你的命令对文件名不感兴趣。所以你只想运行一个命令如果找到文件?在这种情况下,您可以尝试类似:

find -name nosuchfile | if read; then echo "hello"; fi;

答案 1 :(得分:0)

-quit主要版本可与-exec一起使用,-quit存在于BSD和GNU find实现中。构建下面的示例是为了确保find在第一次匹配后终止,而不管实用程序的退出状态如何。

find path... [expression] \( -exec utility \; -quit -or -quit \)