Copie um arquivo do diretório de origem para o diretório base de destino e mantenha o caminho de origem

Copie um arquivo do diretório de origem para o diretório base de destino e mantenha o caminho de origem

Perdoe-me, provavelmente não estou usando os termos corretos para descrever o problema e entendendo mal o uso mais básico de alguns comandos comuns.

Eu tenho uma instrução find simples que localiza os arquivos que desejo copiar. Quero aderir ao -exec cp {} e fazer com que cp copie o arquivo do diretório de origem para um novo diretório base, mas inclua o caminho completo. Por exemplo:

  • find . -name *.txtlocaliza/user/username/projects/source.txt
  • cp {} [now what?]copia o arquivo para/user/newuser/projects/source.txt

Responder1

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

Responder2

Se você tiver certeza de que todos os subdiretórios existem, esta é uma opção divertida:

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

informação relacionada