答案1
最近的终端仿真器确实在有限程度上处理超链接。如果它“知道”使用哪个程序来打开文档,那么您只需stdout
在终端窗口中回显文件名,并在前面加上正确的协议即可。由于我们正在处理本地文件,因此这意味着更改
/path/to/file/this.doc
到
file:///path/to/file/this.doc
就像一个超链接,但没有域名。如果您的 shell 知道如何打开文件类型,那么它就会这样做。
for i in $(ls); do echo "file://$(pwd)/$i"; done
ctrl
+click
编辑
为了从评论和答案中带来 @tripleee 的出色改进......
printf "file://$(pwd)/%s\n" *
结束编辑
这对于文件名中带有空格的文件不起作用,因为 的扩展$(ls)
会生成由空格分隔的文件名列表。空间之内文件名将使 shell 认为它实际上是由空格分隔的两个文件名。
my file.pdf
变成
my
file.pdf
如果你的文件名中有空格,那么尝试这个,直到你找到一个更优雅的解决方案,因为我只是为了下一个问题而破解它......;-)
for f in $(find . -type f -maxdepth 1 -iname "*" | sed 's/ /%20/g'); do echo "file://$(pwd)/${f#*/}"; done
只需按照正常方式使用find
即可返回您想要的文件。