Remove muitos arquivos muitos de uma pasta

7

Eu tenho uma pasta com 137795 arquivos nela. Preciso deletar todos eles. Quando eu executo rm * , recebo -bash: /bin/rm: Argument list too long . Como faço para superar esse erro?

    
por David Oneill 06.04.2012 / 16:51

3 respostas

14

Como posso ver, não é necessário remover seu diretório, apenas arquivos dentro dele. Então você pode recriá-lo

rm -r /path/to/dir && mkdir /path/to/dir

ou até mesmo excluir apenas arquivos dentro de

find /path/to/dir -type f -delete

depois de um primeiro trabalho mais rápido.

UPD. Observe que com find pode não ser o ideal do ponto de vista do consumo de espaço, pois o tamanho do diretório só será reduzido após fsck . Detalhes .

    
por 06.04.2012 / 16:55
3

Solução alternativa nº 1:

find /path/to/dir -delete

Solução 2:

rm a*;

rm b*;

rm c*;

etc
    
por 06.04.2012 / 16:59
-1

Usar find é provavelmente a melhor aposta. Alguns dos problemas com as outras respostas não estão excluindo tudo dentro do diretório ou excluindo o próprio diretório. Você pode usar ls com xargs , se não houver caracteres especiais ou find com determinadas opções.

ls -1 | xargs rm -r

ou

find . -depth -path ./.* -prune -o -not -name . -delete

Isso ignorará qualquer coisa no diretório atual, começando com . ( -prune ) e removerá qualquer outro arquivo ou diretório, desde que não seja o diretório principal ( . ). O -depth procurará primeiro dentro dos diretórios, o que evitará um erro de 'diretório não vazio'. Se o argumento -not não estiver disponível em seu sistema, use ! .

    
por 06.04.2012 / 17:38