我要运行命令
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
关于bash - 如果其中一个文件失败,如何退出 find -exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871147/