Aquí hay una frase:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Como tengo instalado VLC (y por defecto para mp3), esto abre todos los archivos mp3 en un directorio con VLC para mí. Este no es ningún tipo de " solución universal para resolverlo todo y trabajar en todos los casos ", pero debería funcionar.
Explicación:
ls -AQp
enumera "casi todos" los archivos, citando los nombres de los archivos y agregando barras a los nombres de los directorios. Reemplace -p
con --file-type
si también desea excluir enlaces simbólicos. Cita en caso de espacios en los nombres de archivo.
grep "\.mp3\"$"
selecciona solo archivos que terminan con ".mp3" (más comillas dobles).
xargs
redirige todo el lote al programa que devuelve el siguiente subshell.
subshell:
xdg-mime query default audio/mpeg
da el nombre predeterminado de la aplicación en formato "app.desktop" para archivos cuyo mime es audio/mpeg
. Puede verificar mimetype para cualquier archivo en su entorno con xdg-mime query filetype /path/to/file
. Obtuve "audio / mpeg" para archivos mp3.
grep -oP '.+(?=\.desktop)'
obtiene la "aplicación" de "app.desktop".
Si lo va a usar con mucha frecuencia en un sistema que no va a cambiar mucho, puede acortarlo a esto:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Donde se reemplaza default_app
con el programa real que se abre con los archivos. Puede averiguar su nombre con esto:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
No funcionará con este problema, ya que solo acepta un argumento por diseño. Si lo usa
xargs -n1
, es probable que vaya a la pared con el hecho de que la aplicación resultante en cuestión podría abrir todos los archivos en una nueva instancia, lo que podría ponerse feo en más de una forma.
xdg-open
realmente debería poder hacer esto por defecto ... solo pasa la lista de argumentos al programa. ¡Vamos gente de freedesktop.org! :-)