Como outra resposta aponta, você pode tentar encontrar todos os diretórios com o nome test
e 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 test
tiver arquivos, eles find
reclamarão Directory is not empty
e não conseguirão remover o diretório.
Se você pretendia excluir todos os arquivos, incluindo o test
diretório, podemos usar o mesmo truque para excluir todos os arquivos dentro dos diretórios nomeados test
primeiro.
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.