Preciso remover 200.000 arquivos (todos eles) de uma pasta e não quero excluir a própria pasta.
usando rm, recebo um erro "A lista de argumentos é muito longa". Eu tentei fazer algo com xargs, mas não sou um Shell Guy, portanto não funciona:
find -name * | xargs rm -f
Respostas:
fonte
-delete
. Isso também evita problemas com arquivos que contêm aspas ou caracteres de nova linha (embora você possa usar-print0
as-0
opções do GNU find e GNU xarg para corrigir isso).xargs
enquanto issofind
tem-exec command {} +
sintaxe.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:(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 :-)):
Se seus nomes de arquivos contiverem espaços, use o seguinte:
fonte
O comando a seguir excluirá todos os arquivos do diretório atual :
fonte
-name '*'
não significa "todos os arquivos". Os arquivos são ditos com:-type f
podes tentar
ou
fonte
Parabéns pela resposta, aqui estão algumas adições.
Se você deseja excluir arquivos com um padrão de nome específico, pode escrevê-lo assim. Também foi adicionado -print para que você possa ver o que está acontecendo enquanto os arquivos estão sendo excluídos.
Isso, por exemplo, exclui todos os jpegs no meu diretório.
fonte