Digamos que você queira iniciar find
no diretório atual e restringi-lo ao primeiro nível de subdiretórios:
find . -maxdepth 1
O comando find
tem um sinalizador útil -not
(ou !
), que nega o seguinte teste. Então, para encontrar um nome que não contenha uma substring, adicione
-not -name "*substring*"
IMPORTANTE: você também desejará excluir o diretório atual. Caso contrário, todo o diretório atual seria excluído.
-not -name "."
Então você quer testar somente os diretórios:
-type d
E, se tudo parece bem, você deseja excluir esses diretórios:
-exec rm -rf {} \;
que diz "para todos os diretórios encontrados, execute este comando". O {}
é um espaço reservado para o nome do diretório (incluindo o caminho completo, para que funcione no caminho correto). \;
indica o final do comando a ser executado.
Resumindo:
find . -maxdepth 1 -not -name "*substring*" -not -name "." -type d -exec rm -rf {} \;
deve funcionar. Mas primeiro, experimente sem a parte -exec
.