Remover subdiretórios por nível

0

Eu tenho a seguinte estrutura de diretórios:

/level1-root
  /level2-a
    /level3-aa
    /level3-ab
  /level2-b
    /level3-ba

Como posso remover todos os diretórios de nível 3 e seus conteúdos sem tocar em level1 e level2?

    
por ntviet18 21.11.2017 / 12:05

1 resposta

1

Se você remover level3-ba , então level2-b perderá uma de suas entradas, portanto, não "tocará" no nível 2.

Se você quiser remover somente diretórios de nível 3 com seus conteúdos (ou seja, não remover arquivos que estejam diretamente sob diretórios de nível 2, nem nada no nível 2 nem no nível 1), então é um trabalho para find -mindepth ... -maxdepth ... -type d ... . Comando seguro:

find /level1-root -mindepth 2 -maxdepth 2 -type d -exec echo rm -rf {} +
  • Por que 2 ? Porque o seu nível 3 é 2 diretórios mais profundos que /level1-root quando começamos.
  • Depois de confirmar a obtenção dos diretórios desejados, omite echo para realizar a remoção real.
por 21.11.2017 / 12:30

Tags