Tengo varias carpetas como /music/1/a.mp3
y /music/2/b.mp3
Todos los nombres de archivos en sí mismos están garantizados para ser diferentes.
¿Hay alguna manera, probablemente utilizando la Terminal, para copiar estos archivos a /musicTemp/
excluyendo las carpetas?
En otras palabras, el resultado de los dos ejemplos anteriores debe ser:
/music/1/a.mp3
/music/2/b.mp3
dentro:
/musicTemp/a.mp3
/musicTemp/b.mp3
find /music -name "*.mp3" -type file -exec mv {} /destination_dir \;
cp
nomv
. De lo contrario, eso debería funcionar.Respuestas:
los
find
El comando buscará todos los archivos del patrón especificado (-name), en este caso un tipo de archivo específico:*.mp3
.-exec
hace que todos los argumentos siguientes se encuentren para ser tomados como argumentos para el comando hasta que un argumento consistente en;
se encuentra (al final, con escape literal para evitar la expansión por parte del shell). En este caso, el comando que queremos ejecutar es una copia de archivo (cp
) en archivos que coinciden con el patrón ({}
) y copiar esos archivos a/destination_dir
. Este comando debe hacer el truco:fuente
Si usted tiene Bash instalado 4 , podrias agregar
shopt -s globstar
a .bash_profile y ejecute esto:fuente
shopt..
Es necesario ya que esto funciona sin modificaciones, también conmv
.. Gracias de todos modos el**
es nuevo para mi :)