Вот одна строка:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Поскольку у меня установлен VLC (и по умолчанию для mp3s), это открывает все mp3-файлы в каталоге с VLC для меня. Это не какой-то « универсальный способ решить все и работать в каждом безумном случае », но он должен работать.
Объяснение:
ls -AQp
перечисляет «почти все» файлы, цитируя имена файлов и добавляя косую черту к именам каталогов. Замените -p
на, --file-type
если вы также хотите исключить символические ссылки. Цитирование в случае пробелов в именах файлов.
grep "\.mp3\"$"
выбирает только файлы, оканчивающиеся на «.mp3» (плюс двойные кавычки).
xargs
перенаправляет весь лот на программирование, которое возвращается после подоболочки.
подоболочка:
xdg-mime query default audio/mpeg
дает имя приложения по умолчанию в формате "app.desktop" для файлов с mime audio/mpeg
. Вы можете проверить mimetype для любого файла в вашей среде с помощью xdg-mime query filetype /path/to/file
. Я получил "аудио / MPEG" для mp3-файла.
grep -oP '.+(?=\.desktop)'
получает "app" из "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 люди! :-)