我想做这样的事情:
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/