Я пытаюсь извлечь каталог текущей воспроизводимой песни в Quodlibet для использования при попытке отобразить обложку альбома в conky.

В текущем файле QL ~/.quodlibet/current есть строка, которая дает вам полный путь к текущей воспроизводимой песне, но мне нужен только каталог. Есть ли способ, которым я могу игнорировать последнюю часть пути с помощью grep?

Например, если бы у меня был файл с именем /music/album/03-song.ogg , я бы хотел, чтобы grep выводил все до 0 (или 1/2/3/4 для более длинных альбомов).

Я понятия не имею, могу ли я использовать это для того, для чего мне это нужно, но все равно было бы полезно узнать это для дальнейшего использования.

4 ответа4

2

Если current файл содержит допустимый путь к файлу, просто получите его имя каталога:

dirname $(< ~/.quodlibet/current)

$(< …) Прочитает файл и заменит его содержимое, как если бы это был cat.

Вы на самом деле не хотите анализировать файл или использовать какие-либо регулярные выражения. Это может сломаться, например, если имя каталога содержит "0". Единственный надежный источник информации для определения каталога - это последний слеш, и dirname любом случае справится с этим.

0

Только потому, что мне нравится sed :) ... блестящее решение love @ slhck!

$ echo /music/album/03-song.ogg| sed -r 's@^(.+)/.+$@\1@'
/music/album
0
quodlibet --print-playing "<~dirname>"
0

Вы можете сделать это, отправив вывод grep в sed и используя регулярные выражения для извлечения необходимой информации.

Вы можете прочитать о sed и его синтаксисе регулярных выражений на его странице руководства.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .