bash - 如果其中一个文件失败,如何退出 find -exec

标签 bash find exec 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

关于bash - 如果其中一个文件失败,如何退出 find -exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871147/

相关文章:

jQuery 从 url 哈希中查找属性

java - 从 Java 运行 Linux 命令 - runtime.exe

c - 解释器文件的主要用途是什么?

linux - 反向合并文件

linux - 功能适用于相对路径输入但不适用于绝对路径输入

php - 当从 php 执行时,mysql 导入的整理不同

linux - 超过 100 MB 时使用 find 删除目录内容

Go - 组合 cmd.StdoutPipe 和 Cmd.StderrPipe

java - 如何在不指定 winword.exe 路径的情况下从 java/或命令行打开 word 文档/m "Macro argument"

linux - 如何使用 bash 中的安装将目录复制到目录中?