Copie un archivo del directorio de origen al directorio base de destino y mantenga la ruta de origen

Copie un archivo del directorio de origen al directorio base de destino y mantenga la ruta de origen

Perdóneme, probablemente no estoy usando los términos correctos para describir el problema y no entiendo bien el uso más básico de un par de comandos comunes.

Tengo una declaración de búsqueda simple que localiza los archivos que quiero copiar. Quiero agregar -exec cp {} y hacer que cp copie el archivo del directorio de origen a un nuevo directorio base, pero incluya la ruta completa. Por ejemplo:

  • find . -name *.txtlocaliza/user/username/projects/source.txt
  • cp {} [now what?]copia el archivo a/user/newuser/projects/source.txt

Respuesta1

rsync -rlpv --files-from=<(find ...) /user/username/projects /user/newuser

Respuesta2

Si puedes estar seguro de que todos los subdirectorios existen, entonces esta es una opción divertida:

cd /user/username/
find . -name \*.gz | sed 's/\.\(.*\)/.\1 ..\/newuser\1/' | xargs -n2 cp

información relacionada