De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Sérgio Luiz Araújo Silva
Data de Publicação: 23 de junho de 2010
Combinaremos:
find com a opção type d -print0 lista diretórios e marca como delimitador o caractere zero.
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