我正在尝试提取 Quodlibet 中当前播放的歌曲的目录,以用于在 conky 中显示专辑封面。
在 QL 中当前的文件~/.quodlibet/current
中有一行给出了当前播放歌曲的完整路径,但我只需要目录。有没有办法用 grep 忽略路径的最后一部分?
例如,如果我有一个名为的文件/music/album/03-song.ogg
,我只希望 grep 输出之前的所有内容0
(或1/2/3/4
更长的专辑)。
我不知道是否可以将它用于我需要的用途,但了解它对于将来的参考仍然很有用。
答案1
如果current
文件包含文件的有效路径,只需获取其目录名:
dirname $(< ~/.quodlibet/current)
将$(< …)
读取文件并替换其内容就像cat
。
您实际上并不想解析文件或使用任何正则表达式。例如,如果目录名称包含“0”,则这可能会中断。确定目录的唯一可靠信息来源是最后一个斜杠,dirname
无论如何都会处理它。
答案2
您可以通过管道传输grep
输出sed
并使用正则表达式来提取所需的信息来实现此目的。
sed
您可以从其手册页中了解其正则表达式语法。
答案3
只是因为我喜欢 sed :) ...喜欢@slhck 的绝妙解决方案!
$ echo /music/album/03-song.ogg| sed -r 's@^(.+)/.+$@\1@'
/music/album
答案4
quodlibet --print-playing "<~dirname>"