Hier ist ein Einzeiler:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Da ich VLC installiert habe (und standardmäßig für MP3s), werden für mich alle MP3-Dateien in einem Verzeichnis mit VLC geöffnet. Dies ist keine Art von " universellem Lösen von allem und Arbeiten in jedem verdammten Fall ", aber es sollte funktionieren.
Erläuterung:
ls -AQp
listet "fast alle" Dateien auf, zitiert Dateinamen und fügt Schrägstriche an Namen von Verzeichnissen an. Ersetzen Sie -p
durch, --file-type
wenn Sie auch Symlinks ausschließen möchten. Zitieren bei Leerzeichen in Dateinamen.
grep "\.mp3\"$"
Wählt nur Dateien aus, die mit ".mp3" enden (plus doppeltes Anführungszeichen).
xargs
Leitet das gesamte Los an das Programm um, das die folgende Unterschale zurückgibt.
Unterschale:
xdg-mime query default audio/mpeg
Gibt den Namen der Standard-App im Format "app.desktop" für Dateien an, deren MIME ist audio/mpeg
. Sie können den Mimetyp für jede Datei in Ihrer Umgebung mit überprüfen xdg-mime query filetype /path/to/file
. Ich habe "Audio / MPEG" für MP3-Datei.
grep -oP '.+(?=\.desktop)'
Ruft die "App" von "app.desktop" ab.
Wenn Sie es sehr häufig in einem System verwenden, das sich nicht wesentlich ändert, sollten Sie es folgendermaßen kürzen:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Wo Sie durch default_app
das eigentliche Programm ersetzen , das mit den Dateien geöffnet wird. Sie können seinen Namen damit herausfinden:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
funktioniert nicht mit diesem Problem, da es nur ein Argument von Entwurf akzeptiert. Wenn Sie verwenden
xargs -n1
, werden Sie wahrscheinlich damit an die Wand stoßen, dass die resultierende fragliche App möglicherweise jede Datei in einer neuen Instanz öffnet, was in mehr als einer Hinsicht hässlich werden kann.
xdg-open
sollte dies wirklich standardmäßig können ... Übergeben Sie einfach die Argumentliste an das Programm. Komm schon freedesktop.org Leute! :-)