Copiar una lista de prueba/ruta/a/archivos a la lista de productos/ruta/a/archivos

Copiar una lista de prueba/ruta/a/archivos a la lista de productos/ruta/a/archivos

Me gustaría copiar una lista de archivos en el formato test/path/to/file/filename.xyz a su ruta de producción correspondiente prod/path/to/file/filename.xyz. Si la ruta de prueba y la ruta de producción son las mismas excepto por la presencia de "prod" en lugar de "prueba", ¿puedo usar el siguiente comando? ¿Esto sobrescribirá el archivo de destino?

$ xargs -I % --arg-file=input.txt cp /test/% /prod/%

Respuesta1

Edite input.txt para que se lea así (tenga en cuenta el +)

+ /path/to/file/filename.xyz

Entonces,

rsync -amv \
  --include '*/' \
  --include-from input.txt \
  --exclude '*' \
  test/ prod/

También puede ejecutarlo directamente editando el archivo sobre la marcha, por ejemplo:

rsync -amv \
  --include '*/' \
  --include-from <(sed 's/^/+ /' input.txt) \
  --exclude '*' \
  test/ prod/

Es posible que deba cambiar la sedexpresión para adaptarla a sus necesidades.

información relacionada