FOR*_*RAN 16 bash exec find exit
我想运行命令
find some/path -exec program \{} \; 
但我希望find命令尽快退出命令
 program \{}
找不到任何文件失败.
有一个简单的方法吗?
我认为仅凭即可无法实现您想要的find -exec。
最接近的替代方法是对进行管道find传输xargs,例如:
find some/path -print0 | xargs -0 program
要么
find some/path -print0 | xargs -0L1 program
如果程序以非零退出状态终止,则退出
print0使用,使文件在其名称中的换行符可以处理-0-print0使用时是必要的L1讲述xargs在时间程序一个参数执行程序(默认是添加的所有参数在程序的单个执行)如果只有健全的文件名,则可以这样简化:
find some/path | xargs program
要么
find some/path | xargs -L1 program
最后,如果程序采用多个参数,则可以-i与结合使用{}。例如
find some/path | xargs -i program param1 param2 {} param4
除了其他好的答案,GNU find(至少)有一个-quit谓词:
find path -other -predicates \( -exec cmd {} \; -o -quit \)
该-quit谓词是肯定非标和在BSD中发现不存在.
您可以将输出通过find管道传输到另一个子进程并使用while/ break:
find some/path | while read f
do
    program $f
    if [ $? -ne 0 ]
    then
        break
    fi
done
| 归档时间: | 
 | 
| 查看次数: | 3647 次 | 
| 最近记录: |