Вот одна строка:
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 люди! :-)