Traté de abrir todos mis archivos .mp3 desde una carpeta usando, ¡ xdg-open
pero descubrí que solo abre uno! ¡Así que busqué un poco pero no había tal pregunta! Encontré "evince" pero aparentemente abre archivos de texto y gnome-open también abre un archivo.
Quiero abrir todos los archivos del mismo formato en una carpeta desde el terminal. Soy nuevo en Ubuntu, así que explique un poco más.
xdg-open
realmente debería poder hacer esto por defecto ... solo pasa la lista de argumentos al programa. ¡Vamos gente de freedesktop.org! :-)Respuestas:
En efecto. Podrías usar shell para evitar esto, así:
O, si lo quieres más robusto, prueba
fuente
find: paths must precede expression: -
)..
y recibí el mismo mensaje de error. En otro directorio, obtengoxdg-open: unexpected argument './foo.mp3'
con o sin.
.Puedes probar:
ls *.mp3
listará todos los archivos mp3 del directorio actual, cada uno en su propia línea, y la salida se canalizará a unwhile
bucle que leerá el contenido de cada línea y abrirá ese contenido (que es el nombre de un archivo mp3 en este caso ) en su aplicación predeterminada.fuente
-r
bandera. Creo que esto es necesario para analizar correctamente los archivos con un `\` en su nombre.man read
no tiene ninguna bandera en la lista, también! No obtengo un error en mis pruebas, pero probablemente sea porque creéaaa
yaa\a
. En este caso,xdg-open
solo intenta abriraaa
dos veces, y noaa\a
. (De acuerdo, se está volviendo un poco complicado, pero creo que el código debería funcionar para todas las situaciones. Quizásfind
sea una mejor opción, para evitar las limitaciones dels
yread
.) Además, ¿cómo puede causar estragos exactamente? ¿No solo va a analizar la salida dels
?man read
está refiriendo a la lectura de la función C (sección 2 del hombre). Esteread
es un comando bash incorporado, por lo que debe buscar enman bash
algún lugar en la línea 4632. @Sparhawk: gracias por editarlo.Escribí un pequeño script
/usr/local/bin/o
, aunque podría llamarlo/usr/local/bin/xdg-open
y reemplazar el comando predeterminado si lo desea (suponiendo que$PATH
le dé prioridad). Además, si no se le da ningún argumento, este script abrirá el directorio actual.Si no desea abrir el directorio actual sin argumentos, esto conserva el comportamiento predeterminado, es decir, muestra el uso.
NB esto es agnóstico acerca de la capacidad del programa predeterminado para analizar múltiples argumentos, pero en su lugar llamará a cada comando una vez por cada argumento. No creo que haya una forma elegante de evitar esto, ya que los usuarios pueden querer
xdg-open
diferentes tipos de archivos, y algunos comandos no tomarán múltiples argumentos de todos modos.fuente
Escribí este
bash
script para cubrir todos los casos de uso que se me ocurrieron:caracteristicas:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
fuente
Aquí hay una frase:
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 esaudio/mpeg
. Puede verificar mimetype para cualquier archivo en su entorno conxdg-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:
Donde se reemplaza
default_app
con el programa real que se abre con los archivos. Puede averiguar su nombre con esto:xdg-open
No funcionará con este problema, ya que solo acepta un argumento por diseño. Si lo usaxargs -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.fuente
Puedes usar estos comandos
solo si su reproductor de música admite varios archivos como argumentos de línea de comandos. Reemplace
vlc
con su reproductor de música de elección.Esto funciona con RhythmBox y VLC en mis pruebas.
fuente
find
...-exec
ejecuta comandos individuales en cada archivo? Y también, si su reproductor de música admite varios archivos como argumentos de línea de comandos, puede usarlosvlc *.mp3
.\+
al finalfind
si vas a codificar devlc
todos modos. (La pregunta sugiere que todos están en un directorio)+
es suficiente, no es necesario\+
.Use este comando para archivos mp3 si desea abrir archivos en VLC.
Nota: Use
cvlc
para usar VLC sin interfaz.fuente