我想做点什么:
find . -iname "*Advanced*Linux*Program*" -exec kpdf {} & \;
可能?还有其他可比较的方法吗?
答案 0 :(得分:13)
首先,它不会像你输入的那样工作,因为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
将打开默认程序中与桌面环境相关联的文件。
答案 1 :(得分:1)
如果您的目标只是不必关闭一个pdf以查看下一个pdf而不是在其自己的单独实例中显示每个pdf,那么您可以尝试
find . -iname "*Advanced*Linux*Program*" -exec kpdf {} \+ &
使用plussed变体,-exec像xargs一样构建命令行,这样找到的所有文件都将被传递给同一个kpdf实例。 &最后影响整个发现。发现有大量文件可能仍会批量打开它们,因为命令行增长太长,但就系统上的资源消耗而言,这甚至可能是一件好事。 ;)
kpdf必须能够在命令行中获取文件列表才能使用,因为我自己不使用它我不知道这个。