linux - find 命令的 "exec"功能可以在后台启动程序吗?

标签 linux bash unix

我想做这样的事情:

find . -iname "*Advanced*Linux*Program*" -exec kpdf {} & \;

可能吗?其他一些类似的方法可用吗?

最佳答案

首先,它不会像您输入的那样工作,因为 shell 会将其解释为

find . -iname "*Advanced*Linux*Program*" -exec kpdf {} &
\;

这是在后台运行的无效 find,后跟不存在的命令。

即使转义它也不起作用,因为 find -exec 实际上是 exec 给定的参数列表,而不是将它提供给 shell(这是实际处理的& 用于背景)。

一旦您知道就是的问题所在,您所要做的就是启动一个 shell 将这些命令提供给:

find . -iname "*Advanced*Linux*Program*" -exec sh -c '"$0" "$@" &' kpdf {} \;

另一方面,考虑到你正在尝试做的事情,我会建议其中一个

find ... -exec kfmclient exec {} \;  # KDE
find ... -exec gnome-open {} \;      # Gnome
find ... -exec xdg-open {} \;        # any modern desktop

这将在您的桌面环境关联的默认程序中打开文件。

关于linux - find 命令的 "exec"功能可以在后台启动程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853451/

相关文章:

linux - FASM SHR 奇怪的行为

linux - 增加同时打开的文件数。 Ubuntu 16.04.4 长期支持版

linux - mkdir 在 docker 文件中失败,但在手动运行时工作正常

c - nftw 传递具有未定义值的 tflag

windows - LINUX 上是否需要 UNALIGNED 内存访问(从 Windows 移植到 Linux)

bash - Bash 是否有 Batch 的 msg * 等价物?

mysql - 使用shell脚本访问mysql

linux - bash 脚本,在 for 循环奇怪的行为中处理文件名中的空格

linux - Linux 上响应 free 命令的可用内存和可用内存是什么?

unix - 构建静态链接的 Haxe cpp 程序