¿Cómo puedo encontrar solo los archivos * .mp3 con un comando recursivo como ls -R *.mp3en un directorio que contiene varios subdirectorios y, al final, copiar estos archivos en un directorio que yo elija.
Gracias por su apoyo.
command-line
V 3 L 3 N 0
fuente
fuente

find /path/to/dir/ -name '*.c' | xargs cp -t /target/xargsNormalmente es mucho más rápido. Acabo de ejecutar una prueba rápida aquí para encontrar una carga de archivos c y ejecutarlosls -len ellos. Son 0m2.420s paraxargsy 0m25.494s para-exec... Claramente en este caso lacpoperación tomará la mayor parte del tiempo, por lo que probablemente no importe, pero vale la pena tenerlo en cuenta.-n`` switch to thecomando cp` para evitar sobrescribir en el caso de nombres duplicados (o escribir un script que busque duplicados antes de copiar y renombrar el objetivo según sea necesario)También hay otra forma de hacerlo que creo que se adaptará perfectamente a su propósito. Puede combinarse
findcon unwhilebucle y ni siquiera necesita usar ningunoexeco ningunoxargs. Si, por ejemplo, quisiera copiar sump3sarchivo de descarga a su carpeta de música, usaría el siguiente script, que he usado muchas veces.Puede modificarlo como desee cambiando los directorios que
findbusca y coloca los archivos resultantes; si no se indica ningún directorio,findbuscará en toda la carpeta de inicio. También puede cambiarcpamvu otros comandos. ¡Es bastante rápido, ya que lo acabo de probar con 3945.jpgarchivos! Cópielo en un editor de texto, guárdelo y luego hágalo ejecutable ejecutandochmod +x myscript.En este wiki Bash señalado se muestra lo útil que es combinar el
whilebucle y losreadcomandos para procesar la salida delfindcomando; y la forma en que lo he hecho asegura que el script no se rompa si se encuentra con nombres de archivos con espacios u otros caracteres inesperados o especiales.Para obtener información más general sobre el
findcomando, ingrese en el terminalman findo consulte las páginas de manual de Ubuntu en línea . Para una gran introducción al uso de find, vea también este artículo .fuente
find ~/Downloads -type f -iname '*.mp3' | while read mp3file; do cp "$mp3file" ~/Music; donemás simple?-n`` switch to thecomando cp` para evitar sobrescribir en el caso de nombres duplicados (o escribir un script que busque duplicados antes de copiar y renombrar el objetivo según sea necesario)