Copiando uma estrutura de pastas sem copiar os arquivos
Colaboração: Sérgio Luiz Araújo Silva
Data de Publicação: 23 de junho de 2010
Combinaremos:
- Conceito de subshell (executa comandos sem sair do diretório corrente)
- Comando find com a opção '-type d -print0' lista diretórios e marca como delimitador o caractere zero.
- Comando xargs com a opção '0'
- mkdir com a opção '
-p
'
Tomemos por exemplo a estrutura de uma pasta ~/docs
:
( cd ~/docs ; find -type d -print0 ) | xargs -0 mkdir -p | | + -------> diretório base
O trecho entre parênteses é executado num subshell. A intenção é gerar a lista das pastas à partir do diretório indicado, o print0 do find ajuda a evitar que pastas com nomes compostos gerem duas ou mais pastas. Note que o xargs tem também uma opção zero '0' para pegar este delimitador. Outra função do xargs é evitar estouro de pilha. O xargs só entrega ao mkdir blocos de um tamanho aceitável sendo muito mais rápido do que a opção`` -exec`` do find.
Para pesquisar dica sobre bash no meu blog: http://vivaotux.blogspot.com/search/label/bash