2 votos

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

Tengo una estructura de árbol de directorios grande que contiene múltiples archivos JPG en cada directorio root y en sus subdirectorios subsiguientes. Necesito extraer de forma recursiva un solo archivo JPG de cada directorio root y copiarlos todos a otra ubicación manteniendo la misma estructura de árbol e ignorando los demás 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 hacer que funcionara. Estoy ejecutando Mavericks y soy un novato en lo que respecta a las líneas de comandos de UNIX.

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

  • VNOMBRE/PNOMBRE1/PNOMBRE1_RNav.jpg
  • VNOMBRE/PNOMBRE2/PNOMBRE2_RNav.jpg
  • VNOMBRE/PNOMBRE3/PNOMBRE3_RNav.jpg
  • VNOMBRE/PNOMBRE4/PNOMBRE4_RNav.jpg

3voto

MasterKye Puntos 46

Puedes usar fácilmente rsync para lograr esto:

rsync --include "*/" --include "*RNav.jpg" --exclude "*" -am origen destino

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 preservar más información (mi preferencia personal) y he añadido -m para evitar que rsync cree partes del árbol de directorios que no contendrían archivos.

1voto

Fuzzy Purple Monkey Puntos 702

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

rsync -R */*/*.RNav.jpg /ruta/hacia/destino
gcp --parents */*/*RNav.jpg /ruta/hacia/destino
find . -name \*RNav.jpg -exec rsync -R {} /ruta/hacia/destino \;
find . -name \*RNav.jpg -exec gcp --parents {} /ruta/hacia/destino \;

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X