Como posso copiar um subconjunto de arquivos de um diretório enquanto preservo a estrutura de pastas?

8

Eu quero mover alguns subconjuntos de arquivos de dirA para dirB (digamos, arquivos com "blah" no nome do arquivo), mas eu quero que todos os diretórios aninhados sejam os mesmos no novo local. Como posso fazer isso?

    
por cstack 08.04.2011 / 02:41

3 respostas

9

A mágica das regras do filtro rsync :

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

Consulte a página rsync man para detalhes sobre as regras de filtragem, mas aqui está a versão condensada para essa necessidade específica.

--filter="+ */" significa "incluir tudo o que é um diretório"

--filter="-! *blah* significa "excluir tudo o que NÃO inclui blá no nome do arquivo"

    
por 08.04.2011 / 04:16
2

Se você precisar copiar esses arquivos, o cp fará:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

Opção --parents preserva subdiretórios - cria o caminho completo do diretório para o destino.

    
por 22.10.2017 / 16:17
0

Isso funcionou para mim:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/

A opção -e define rsync protocolo de transferência com porta como -p 22 . Além disso, as barras / são importantes para informar ao programa que ele está lidando com diretórios.

Obrigado @pdo pelas horas extras no meu dia de trabalho!

    
por 29.03.2013 / 23:33