Excluindo pastas específicas ao copiar materiais de um diretório para outro

1

Eu tenho que copiar o conteúdo de algum código de uma pasta chamada aim-db-dir para outro chamado aim-db-dir_nosvn . aim-db-dir contém pastas .svn em todos os diretórios (e subdiretórios) e essas pastas .svn contêm algumas pastas e arquivos com os quais não estou preocupado. Eu quero copiar tudo nos diretórios e subdiretórios em aim-db-dir , exceto as pastas .svn e seu conteúdo.

Então, minha pergunta é como faço isso. Eu li sobre rsync , mas não tenho certeza se podemos excluir os padrões de diretório e arquivo. Também tentei fazer usando find e cp mas estou faltando alguma coisa.

O comando que estou tentando é algo como (não funciona) -

find aim-db-dir/* -not -name ".svn" | sed -n 's|^aim-db-dir/||p' -exec cp -R "{}" "aim-db-dir_nosvn/{}" \;

Eu também pensei em usar xargs , mas eu nunca usei, então não tenho certeza se ele pode ser usado. Múltiplas soluções são apreciadas!

    
por abhihello123 08.06.2017 / 06:51

1 resposta

4

Com o GNU find e o GNU cpio :

find /path/to/aim-db-dir -name .svn -prune -o -print0 | cpio -padmv0 /path/to/aim-db-dir_nosvn

com rsync :

rsync -av -exclude=.svn /path/to/aim-db-dir/ /path/to/aim-db-dir_nosvn

A barra no final em /path/to/aim-db-dir/ é importante, sem que um diretório chamado aim-db-dir seja criado em aim-db-dir_nosvn .

Com o GNU tar :

tar cpf - --exclude-vcs -C /path/to/aim-db-dir . | tar xvpf - -C /path/to/aim-db-dir_nosvn

Há um limite no comprimento máximo dos caminhos dos arquivos que você pode copiar com tar , proveniente de uma limitação no formato PAX subjacente.

    
por 08.06.2017 / 08:55