代码之家  ›  专栏  ›  技术社区  ›  Duck

find命令的“exec”功能可以在后台启动程序吗?

  •  2
  • Duck  · 技术社区  · 17 年前

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

    2 回复  |  直到 17 年前
        1
  •  13
  •   ephemient    17 年前

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

    这是无效的 find

    find -exec 实际上 exec s给出了参数列表,而不是将其提供给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
    

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

        2
  •  1
  •   Olfan    17 年前

    如果你的目标只是不必关闭一个pdf才能看到下一个pdf,而不是在单独的实例中显示每个pdf,你可以尝试

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

    推荐文章