Tengo toda mi música en una carpeta /media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside. Quiero copiar todos los mp3 a, /media/kalenpw/HDD/Musicasí que usé:
cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
sin embargo, esto solo copió los mp3 en la carpeta de música raíz y no abrió ninguno de los subdirectorios del artista y no copió esos archivos.
Tenía la impresión de -Rque copiaría recursivamente todos los archivos. ¿Cómo puedo lograr dicho objetivo?

-inamelugar de-nameen caso de que algún archivo termine.MP3.Usted ha mencionado específicamente los archivos / directorio (s) que se copiarán utilizando,
*.mp3es decir, cualquier nombre de archivo / directorio que termine en.mp3.Por lo que cualquier archivo con extensión
.mp3en el/media/kalenpw/MyBook/Music/directorio y del mismo modo, cualquier directorio que termina en.mp3en/media/kalenpw/MyBook/Music/se copiará, de forma recursiva. Si no existe un archivo / directorio coincidente, no se copiará nada.Ahora para copiar todos los
.mp3archivos de/media/kalenpw/MyBook/Music/recursivley al directorio/media/kalenpw/HDD/Music/:Utilizando
bash:Utilizando
find:fuente
También puedes usar cpr :
Tenga en cuenta que sin
-pcpr conservará las rutas de directorio completas en los nombres de archivos copiados.-rse puede usar (en lugar de-p) para preservar la ruta en '/media.../Music/'.También
cprse ocupará de que no se sobrescriba ningún archivo, agregando un número que comience en '0001' a cualquier nombre de archivo repetido copiado.fuente
Supongamos que usted tiene un montón de
.docx,.mp3,.txty.xlsxarchivos almacenados en esta estructura de directorios:... y desea recurrir a todos esos directorios para copiar todos los
.mp3archivos encontrados ,/home/me/music/pero no desea conservar dicho árbol de directorios en el destino (es decir, desea que todos los.mp3archivos encontrados se copien en/home/me/music/lugar de copiarse en los directorios respectivos tales como/home/me/music/dir1/,/home/me/music/dir1/dir11/etcétera).En tal caso, en el terminal de shell (bash) primero ejecute este comando para acceder a la raíz de su búsqueda de archivos:
... y luego ejecuta este comando:
En caso de que no desea conservar árbol de directorios de la fuente en el destino, ejecute este comando en su lugar (después de correr
cd /files):En los comandos anteriores, la búsqueda no distingue entre mayúsculas y minúsculas (es decir
.mp3, coincidencias.MP3,.mP3y.Mp3). Use en-namelugar de-inamesi desea que la búsqueda distinga entre mayúsculas y minúsculas (por ejemplo, usar-namepara la.mp3cadena de caracteres coincidirá con los archivos que terminan en,.mp3pero no con los que terminan con.MP3,.mP3ni.Mp3).fuente
find /source/dir -iname '*.mp3' | cpio -pdm /home/me/music/, creará / home / me / music / source / dir y los archivos se copiarán en esta nueva ubicación.