Ось одноколісний:
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! :-)