Вероятно, вы забыли передать xscreensaver соответствующие cookies аутентификации.
Смотрите https://github.com/the-cavalry/light-locker/issues/81 для примера, как это сделать, и так как вы не используете light-locker, проблема не применима, и скрипты, упомянутые в том сообщении, должны "просто работать" для вас.
Чтобы получить такой вывод:
00:07:22 first.mp3
00:02:33 second.mp3
00:04:04 third.mp3
использовать:
for file in *.mp3
do
echo -n $(ffprobe $file 2>&1 | grep 'Duration' | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1)
echo " $file"
done
где
2>&1
перенаправляет stderr на stdout grep...
фильтрует только строку с длительностью cut...
выпискиDuration: 00:07:22.33
cut...
выписки00:07:22.33
cut...
выписки00:07:22
Вы можете легко избавиться от информации, помещенной в stderr
, с помощью опции -loglevel -quiet
. В этом случае вам нужно запросить поле, которое вы хотите отобразить.
[user@host ~]$ ffprobe -loglevel quiet -show_entries format=duration test/test.mp3
[FORMAT]
duration=172.434286
[/FORMAT]
Это по-прежнему дает некоторую дополнительную информацию, которую можно сократить, и продолжительность в секундах.
[user@host test]$ ffprobe -loglevel quiet -show_entries format=duration \-print_format default=noprint_wrappers=1:nokey=1 -pretty test.mp3
0:02:52.434286
Здесь можно использовать -print_format
, чтобы избавиться от лишней информации.:
default=noprint_wrappers=1
удалит [FORMAT]
материал nokey=1
удалит ключевое имяduration=
И последнее, но не менее важное: вы можете использовать -pretty
или просто -sexagesimal
для преобразования длительности в секундах в формат HH:MM:SS.MICROSECONDS
.
Чтобы найти все файлы MP3 в папке, вы можете объединить find
и команду ffprobe
выше.
[user@host ~]$ find test/ -name '*mp3' -printf "%f:\t" -exec ffprobe -loglevel error -print_format default=noprint_wrappers=1:nokey=1 -pretty -show_entries stream=duration "{}" \;
test.mp3: 0:02:52.434286