我想做的事情如下:
find . -iname "*Advanced*Linux*Program*" -exec kpdf {} & \;
Run Code Online (Sandbox Code Playgroud)
可能?还有其他可比的方法吗?
eph*_*ent 13
首先,它不会像您键入的那样工作,因为shell会将其解释为
find . -iname "*Advanced*Linux*Program*" -exec kpdf {} &
\;
Run Code Online (Sandbox Code Playgroud)
这是find在后台运行无效,后跟一个不存在的命令.
即使转义它也不起作用,因为find -exec实际上exec是给出的参数列表,而不是将它赋予shell(这实际上是&为后台处理的).
一旦你知道这就是问题,你所要做的就是启动一个shell来给这些命令:
find . -iname "*Advanced*Linux*Program*" -exec sh -c '"$0" "$@" &' kpdf {} \;
Run Code Online (Sandbox Code Playgroud)
另一方面,鉴于你想要做什么,我建议你做一个
find ... -exec kfmclient exec {} \; # KDE
find ... -exec gnome-open {} \; # Gnome
find ... -exec xdg-open {} \; # any modern desktop
Run Code Online (Sandbox Code Playgroud)
这将打开默认程序中与桌面环境关联的文件.