La situación es que tengo un reproductor de MP3 mpg321
que acepta una lista de archivos como argumento. Mantengo mi música en un directorio llamado "música", en el que hay algunos directorios más. Solo quiero jugar a todos, así que ejecuto el programa con
mpg321 $(find /music -iname "*\.mp3")
. El problema es que algunos nombres de archivos tienen espacios en blanco, y el programa divide esos nombres en partes más pequeñas y se queja de la falta de archivos. Envolviendo el resultado de find
entre comillas
mpg321 "$(find /music -iname "*\.mp3")"
no ayuda porque todo se convertirá en un gran "nombre de archivo", que obviamente no se encuentra.
¿Cómo puedo hacer esto entonces? Si eso es importante, lo estoy usando bash
, pero lo cambiaré zsh
pronto.
fuente
mpg321 $(find /music -iname "*\.mp3" -print0)
no?mpg321
no tiene nada que ver con eso, es el shell que está dividiendo la salidafind
en argumentos separados. Y-print0 | xargs -0
funcionará con todos los nombres de archivo posibles.