xargs
faz toda a mágica:
find . -name test -type d -print0|xargs -0 rm -r --
xargs
executa o comando passado como parâmetros, com os argumentos passados para stdin.
Isso está usando rm -r
para excluir o diretório e todos os seus filhos.
O --
denota o fim dos argumentos, para evitar um caminho começando com -
de ser tratado como um argumento.
-print0
informa find
para imprimir
caracteres em vez de novas linhas; e -0
xargs
informa
para tratar apenas rm
rm
como separador de argumentos.
Isso está chamando find
com muitos diretórios de uma vez, evitando a sobrecarga de chamar rm
separadamente para cada diretório.
Como alternativa, +
também pode executar um comando para cada arquivo selecionado :
find . -name test -type d -exec rm -r {} \;
E este, com melhor desempenho, já que chamará xargs
com vários diretórios ao mesmo tempo :
find . -name test -type d -exec rm -r {} +
(Observe o %code% no final; este é equivalente à solução %code% .)