Ось одноколісний:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Оскільки у мене встановлено VLC (і як за замовчуванням для mp3), це відкриває всі mp3-файли в каталозі з VLC для мене. Це не якийсь " універсальний-виріши-все-і-все-в-у-у-кожний ", - але це має працювати.
Пояснення:
ls -AQp
перелічує "майже всі" файли, цитуючи назви файлів і додаючи косу рису до імен каталогів. Замінити -p
з , --file-type
якщо ви хочете , щоб виключити символьні посилання , а також. Цитування у випадку пробілів у назви файлів.
grep "\.mp3\"$"
вибирає лише файли, які закінчуються ".mp3" (плюс подвійне цитування).
xargs
весь лот перенаправляє на програму, яка повертається після підзарядки.
нижня вартість:
xdg-mime query default audio/mpeg
дає ім'я програми за замовчуванням у форматі "app.desktop" для файлів, мім яких audio/mpeg
. Ви можете перевірити mimetype на будь-який файл у вашому оточенні xdg-mime query filetype /path/to/file
. Я отримав "аудіо / mpeg" для mp3-файлу.
grep -oP '.+(?=\.desktop)'
отримує "додаток" від "app.desktop".
Якщо ви збираєтеся використовувати його дуже часто в системі, яка не зміниться сильно, ви можете скоротити її до цього:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Де ви заміняєте default_app
фактичну програму, яка відкривається з файлами. Ви можете з'ясувати його ім'я за цим:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
не буде працювати з цією проблемою, оскільки вона приймає лише один аргумент за задумом. Якщо
xargs -n1
ви користуєтесь, ви, мабуть, потрапили в стіну, тому що отримана програма може відкрити кожен файл у новому екземплярі, який може стати некрасивим більш ніж одним способом.
xdg-open
дійсно має бути в змозі зробити це за замовчуванням ... просто передайте список аргументів програмі. Заходьте люди freedesktop.org! :-)