Seu comando find
funciona bem para mim com o GNU find
. Se não funcionar no seu sistema, tente:
find . -maxdepth 1 -type d -exec sh -c 'rm -r "../$1"' Rm {} \;
Essa abordagem usa {}
como um argumento independente, não modificado por ../
. Passamos o valor de {}
para o shell e o shell aplica o ../
.
Notas:
-
A ordem de
-maxdepth 1
e-type d
foi revertida, poisman find
recomenda que opções globais, como-maxdepth
, sejam definidas antes de opções posicionais como-type
. -
O comando shell deve estar entre aspas simples:
'rm -r "../$1"'
. Se estivesse entre aspas duplas, o shell de origem substituiria seu valor por$1
e o nome do diretório encontrado porfind
seria ignorado. Precisamos do chamadosh
para fazer a substituição. A string"../$1"
está entre aspas duplas para proteger o nome do diretório,$1
, contra a divisão de palavras e a expansão do nome do caminho. -
O shell atribui a string
Rm
a$0
. Isso não é usado, a menos que haja uma mensagem de erro. Consequentemente, qualquer string pode ser usada.