Você está fazendo tudo certo. É o '*' que lhe dá um problema (o shell está expandindo-o para a lista de arquivos em vez de find
). A sintaxe correta pode ser:
cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f
(O último é um pouco menos eficiente, pois passará nomes mais longos xargs
, mas você dificilmente notará :-))
Como alternativa, você pode escapar do seu '*' assim (no entanto, nesse caso, ele também tentará remover "." E ".."; não é nada demais - você receberá apenas um pequeno aviso :-)):
find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f
Se seus nomes de arquivos contiverem espaços, use o seguinte:
find . -type f -print0 | xargs -0 rm -f