Como apagar todos os diretórios com um nome específico?

3

Sob um diretório, eu tenho um monte de diretórios chamados Debug . Como excluo todos os diretórios Debug ?

    
por sontra 19.11.2014 / 21:52

1 resposta

3

Não está claro --- sob o diretório dir_a você pode ter apenas um diretório chamado Debug . Ou você está dizendo que tem dir_a/Debug , dir_a/dir_b/Debug , dir_a/dir_c/Debug e assim por diante?

Você pode listar todos os diretórios nomeados exatamente Debug no diretório dir_a com:

cd dir_a   # or whatever you need to go there
find . -type d -name Debug

isso listará todos os diretórios denominados Debug no diretório atual. Para apagá-los (verifique, NÃO É DIVERTIDO ):

find . -depth -type d -name Debug -exec rm -r {} \; 

-depth listará Debug/Debug/ antes de Debug/ para evitar erros.

Em detalhes:

  1. find . -type d -name Debug pesquisará todos os diretórios sob o atual ( . ) para entradas que são ambos diretório ( -type d ) e possuem o nome "Debug" ( -name Debug ).

  2. A -depth flag adicionada faz a profundidade da pesquisa primeiro (significa que as correspondências "mais profundas" são encontradas antes das "rasas").

  3. -exec ... \; informa find para executar o comando em ... para cada correspondência. (O ponto-e-vírgula é citado porque senão o shell irá interpretá-lo).

  4. No comando ... acima, o símbolo especial {} é substituído pela correspondência atual.

Então, em inglês simples, é: encontre todos os diretórios sob este nome cujo nome é "Debug", profundidade primeiro, e para cada um execute o comando rm -r seguido pelo nome completo do diretório.

    
por Rmano 19.11.2014 / 22:12