Como outra resposta aponta, você pode tentar encontrar todos os diretórios com o nome teste excluí-los
find -name "test" -type d -delete
Eu tive alguns problemas com compatibilidade cruzada no Mac, então usei este comando equivalente:
find -path "*/test" -type d -delete
- -caminho : procura um padrão no nome do arquivo completo.
Em qualquer um dos casos, no entanto, se algum dos diretórios nomeados testtiver arquivos, eles findreclamarão Directory is not emptye não conseguirão remover o diretório.
Se você pretendia excluir todos os arquivos, incluindo o testdiretório, podemos usar o mesmo truque para excluir todos os arquivos dentro dos diretórios nomeados testprimeiro.
find -path "*/test/*" -delete
O padrão "*/test/*":, garantirá que apenas excluamos arquivos dentro de um diretório chamado /test/. Depois que os diretórios estiverem vazios, podemos prosseguir e excluir os diretórios usando o primeiro comando:
find -path "*/test" -type d -delete
Exemplo:
$ tree
.
├── mytest
│ └── test
│ └── blah.txt
├── test
│ ├── bar.jpg
│ └── dir
│ └── bar.bak
└── testdir
└── baz.c
5 directories, 4 files
$ find -path "*/test" -type d -delete
$ tree
.
├── mytest
│ └── test
├── test
└── testdir
└── baz.c
4 directories, 1 file
$ find -name "test" -type d -delete
$ tree
.
├── mytest
└── testdir
└── baz.c
2 directories, 1 file
+em encontrar. Eu não tinha ideia, definitivamente desejava ter sabido disso há muito tempo.