查找 . -name "documentation.html" | xargs xdg-open

查找 . -name "documentation.html" | xargs xdg-open

(bash) 命令find . -name "documentation.html" | xargs xdg-open 找到一个文件并将其路径传递给 xdg-open,但 xdg-open 出现错误:

xdg-open: unexpected argument './distribution/docs/target/docs/html/documentation.html'

该命令find . -name "documentation.html" -exec xdg-open {} +导致相同的错误

为什么?find将引号字符传递给 xdg-open 吗?我搞不懂。

答案1

这可能是由于 xargs 中输入的多余字符或错误(即某些目录的权限被拒绝)造成的。

如果您只想将一个文件传递给 xargs,您可以尝试以下操作:

find -type f -name "documentation.html" 2> /dev/null | head -n 1 | xargs -n 1 xdg-open

或者

xdg-open `find -type f -name "examples.desktop" 2> /dev/null`

另一个解决方案是 while 循环:

find -type f -name "examples.desktop" 2> /dev/null | while read -r FILE ; do xdg-open "$FILE" ; done

相关内容