Excluir uma grande quantidade de diretórios em um nível superior

0

Eu tenho um diretório cheio de vários outros diretórios com a mesma estrutura, então parece com isso

top/A/Output/platform/..
top/B/Output/platform/..
top/C/Output/platform/..

e assim por diante. Eu quero, a partir do nível top , excluir todos os diretórios para baixo dos diretórios platform , de tal forma que acabo com

top/A/Output
top/B/Output
top/C/Output

Alguém pode me recomendar um comando para isso? Eu estou no rhel7 com bash 4.1.2

EDITAR:

Eu tenho um monte de diretórios de 'segundo nível' cujos nomes são mais complexos do que letras únicas, desculpe deveria ter notado que mais explicitamente

    
por Madden 06.02.2017 / 16:11

3 respostas

3

rm -rf top/?/Output/platform

ou, se o diretório de segundo nível puder ser mais de um caractere (A, B ou C no seu exemplo):

rm -rf top/*/Output/platform
    
por 06.02.2017 / 16:17
0

Veja man find para mais opções, como padrões de regex:

find top -type d -name platform -print0 | xargs -0 rm -rf
    
por 06.02.2017 / 16:39
0

Você pode usar desta forma:

find top -path 'top/*/Output/platform' -delete

Observe que isso excluirá arquivos e diretórios que começam com um ponto.

O comando a seguir não exclui arquivos e diretórios que começam com um ponto, porque o shell os ignorará quando substituir as estrelas:

rm top/*/Output/platform
    
por 06.02.2017 / 17:02