Tengo toda mi música en una carpeta /media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside
. Quiero copiar todos los mp3 a, /media/kalenpw/HDD/Music
así 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 -R
que copiaría recursivamente todos los archivos. ¿Cómo puedo lograr dicho objetivo?
-iname
lugar de-name
en caso de que algún archivo termine.MP3
.Usted ha mencionado específicamente los archivos / directorio (s) que se copiarán utilizando,
*.mp3
es decir, cualquier nombre de archivo / directorio que termine en.mp3
.Por lo que cualquier archivo con extensión
.mp3
en el/media/kalenpw/MyBook/Music/
directorio y del mismo modo, cualquier directorio que termina en.mp3
en/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
.mp3
archivos 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
-p
cpr conservará las rutas de directorio completas en los nombres de archivos copiados.-r
se puede usar (en lugar de-p
) para preservar la ruta en '/media.../Music/'.También
cpr
se 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
,.txt
y.xlsx
archivos almacenados en esta estructura de directorios:... y desea recurrir a todos esos directorios para copiar todos los
.mp3
archivos encontrados ,/home/me/music/
pero no desea conservar dicho árbol de directorios en el destino (es decir, desea que todos los.mp3
archivos 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
,.mP3
y.Mp3
). Use en-name
lugar de-iname
si desea que la búsqueda distinga entre mayúsculas y minúsculas (por ejemplo, usar-name
para la.mp3
cadena de caracteres coincidirá con los archivos que terminan en,.mp3
pero no con los que terminan con.MP3
,.mP3
ni.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.