find + cpio: Copiando arquivos e mantendo a estrutura original de diretórios

Dica rápida para quem deseja copiar determinados tipos de arquivos, mas mantendo a estrutura original de diretórios dos mesmos.

Exemplo:

Supondo que você tenha o diretório ‘/mnt/compartilhamentos’ e dentro deste vários subdiretórios, tipo ‘diretória’, ‘rh’, ‘protocolo’, etc… e dentro de cada um destes outros diretórios, e deseja copiar somente os ‘.doc’, ‘.xls’, ‘.odt’, ‘.ppt’, etc… da vida mas mantendo a estrutura original de diretórios, como fazer?

Bem, basta que se use a dupla find + cpio! Veja:

$ find /mnt/compartilhamentos/ -regextype posix-extended -regex '.*\.(do(c|t)?(m|x)?|xl(a|s|t)?(m|x)?|p(o|p)?(a|s|t)?(m|x)?|o(d|t)?(d|f|p|s|t)?)' -print0 | cpio --null --sparse -pdv /diretório/de/destino

Pronto! Bronca resolvida. 😎

Mais detalhes? (Salve seu dia, consulte as man pages!)
man find
man cpio

Falou!!! 😉

PS. O comando ‘cp’ com a opção ‘–parents’ também faz a mesma coisa. :doh:

Anúncios

2 respostas em “find + cpio: Copiando arquivos e mantendo a estrutura original de diretórios

  1. Diego writes:Como faço para copiar tudo mas pra dentro de uma pasta só sem preservar a estrutura das pastas?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s