假设我跑步xdg-open file.flac
。它将相当于mpv file.flac
.但如果我运行xdg-open *.flac
,它会给我一个错误,因为它认为其他文件是“意外的参数”。我想要它做的是运行mpv *.flac
:单个文件mpv
,所有文件都匹配*.flac
,因此它们最终会出现在播放列表中。
编辑:我找到了一个解决方法:
printf "$sel" | sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/" | xargs `printf "gtk-launch $(xdg-mime query default $(grep ${sel##*.}= /usr/share/applications/mimeinfo.cache | cut -d '/' -f 1)/${sel##*.})"`
$sel
是我要打开的文件。
答案1
xdg-open
不处理多个参数,因此您能做的最好的事情就是循环遍历文件:
for file in ./*.flac; do xdg-open "$file"; done
xdg-open
跑起来是不可能的mpv *.flac
。
您可以尝试制定手动使用的命令:
$ xdg-mime query filetype *.flac
audio/flac
$ xdg-mime query default audio/flac
这应该指向mpv
的桌面文件,尽管没有路径。找出它在哪里(使用$XDG_DATA_DIRS
或/usr/local/share:/usr/share
如果未定义 - 在applications
子目录中查找),然后提取入口Exec
;占位%F
符指定多个文件的命名位置(如果应用程序支持的话)。