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 1e-type dfoi revertida, poisman findrecomenda 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$1e o nome do diretório encontrado porfindseria ignorado. Precisamos do chamadoshpara 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
Rma$0. Isso não é usado, a menos que haja uma mensagem de erro. Consequentemente, qualquer string pode ser usada.