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 -AQp
wyświetla listę „prawie wszystkich” plików, cytując nazwy plików i dodając ukośnik do nazw katalogów. Wymień -p
się --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/mpeg
podaje 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_app
na 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-open
nie 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-open
naprawdę powinien być w stanie to zrobić domyślnie ... wystarczy przekazać listę argumentów do programu. Przyjdź na freedesktop.org ludzi! :-)