Oto jedna linijka:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Ponieważ mam zainstalowaną VLC (i domyślnie dla mp3), to otwiera dla mnie wszystkie pliki mp3 w katalogu z VLC. Nie jest to żaden rodzaj „ uniwersalnego rozwiązania dla wszystkich dziwnych przypadków ”, ale powinno działać.
Wyjaśnienie:
ls -AQpwyświetla listę „prawie wszystkich” plików, cytując nazwy plików i dodając ukośnik do nazw katalogów. Wymień -psię --file-type, jeśli chcesz, aby wykluczyć dowiązania jako dobrze. Cytowanie w przypadku spacji w nazwach plików.
grep "\.mp3\"$" wybiera tylko pliki, które kończą się „.mp3” (plus podwójny cudzysłów).
xargs przekierowuje całą partię do programu, który następuje po powrocie podpowłoki.
podpowłoka:
xdg-mime query default audio/mpegpodaje domyślną nazwę aplikacji w formacie „app.desktop” dla plików, których mime to audio/mpeg. Możesz sprawdzić typ mime dla dowolnego pliku w swoim środowisku za pomocą xdg-mime query filetype /path/to/file. Mam plik „audio / mpeg” do pliku mp3.
grep -oP '.+(?=\.desktop)' pobiera „aplikację” z „app.desktop”.
Jeśli zamierzasz używać go bardzo często w systemie, który niewiele się zmieni, możesz go skrócić do tego:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Gdzie zamieniasz default_appna rzeczywisty program, który otwiera się z plikami. Możesz dowiedzieć się, jak się nazywa:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-opennie będzie działać z tym problemem, ponieważ z założenia przyjmuje tylko jeden argument. Jeśli używasz
xargs -n1, prawdopodobnie trafisz w ścianę dzięki temu, że wynikowa aplikacja może otworzyć każdy plik w nowej instancji, co może stać się brzydkie na więcej niż jeden sposób.
xdg-opennaprawdę powinien być w stanie to zrobić domyślnie ... wystarczy przekazać listę argumentów do programu. Przyjdź na freedesktop.org ludzi! :-)