Comando de Unix para copiar recursivamente archivos JPG en un árbol de directorios complejo

2

Tengo una gran estructura de árbol de directorios que contiene varios archivos JPG en cada raíz de directorio y sus subsiguientes subdirectorios. Necesito extraer recursivamente un solo archivo JPG de cada raíz del directorio y copiarlos todos en otra ubicación mientras mantengo la misma estructura de árbol e ignorando los otros archivos. Los nombres de archivo JPG que necesito extraer están etiquetados con "RNav.jpg". Experimenté con el comando cp y el comodín, pero no pude hacerlo funcionar. Estoy ejecutando Mavericks y soy un principiante en lo que respecta a las líneas de comandos de UNIX.

La estructura existente es la siguiente: (hasta 500 directorios)

  • VNAME / PNAME1 / PNAME1_RNav.jpg
  • VNAME / PNAME2 / PNAME2_RNav.jpg
  • VNAME / PNAME3 / PNAME3_RNav.jpg
  • VNAME / PNAME4 / PNAME4_RNav.jpg
pregunta user64184 06.12.2013 - 01:36

2 respuestas

1

También puedes usar rsync -R ( --relative ) o --parents en GNU cp:

rsync -R */*/*.RNav.jpg /path/to/target
gcp --parents */*/*RNav.jpg /path/to/target
find . -name \*RNav.jpg -exec rsync -R {} /path/to/target \;
find . -name \*RNav.jpg -exec gcp --parents {} /path/to/target \;
    
respondido por el user495470 06.12.2013 - 12:01
3

Puedes usar fácilmente rsync para lograr esto:

rsync --include "*/" --include "*RNav.jpg" --exclude "*" -am source destination

Basado en esta página . Esto incluye carpetas y archivos * RNav.jpg y luego excluye todo lo demás. He usado -a en lugar de -r para conservar más información (mi preferencia personal) y agregado -m para evitar que rsync cree cualquier parte del árbol de directorios que no contenga ningún archivo.

    
respondido por el gabedwrds 06.12.2013 - 01:52

Lea otras preguntas en las etiquetas