“Argumento lista muito longo” erro para 'rm -rf *' em um diretório com 4000 arquivos

1

Eu achei que esse problema foi corrigido no Linux há 10 anos. 4000 arquivos realmente não parecem muito excessivos e devem poder ser removidos sem problemas. Portanto, este problema existe claramente no OS X - talvez não no Ubuntu. Estou desenvolvendo no OS X e implantando no Ubuntu

Existe uma solução alternativa em nível de sistema em qualquer ambiente? Eu realmente não quero ter que pensar sobre esse problema para um número tão pequeno de arquivos? Esse problema ainda existe no Linux, especificamente no Ubuntu?

    
por timpone 20.02.2012 / 03:44

3 respostas

5

Isso ainda é um problema em todos os Unixes que eu conheço, assim como no Windows. É realmente um limite no número de bytes sendo passados na linha de comando, não no número de arquivos ou qualquer outra coisa.

Teste getconf ARG_MAX para ver o limite (em bytes) do seu Unix. Você pode usar o comando xargs para contornar esses problemas.

    
por 20.02.2012 / 04:13
3

Embora eu não possa falar por outros * nixs, AFAIK, esse "problema" sempre existiu no Mac OS X.

ARG_MAX é definido como o seguinte em /usr/include/sys/syslimits.h :

#define ARG_MAX   (256 * 1024)  /* max bytes for an exec function */

sysctl kern.argmax retorna:

kern.argmax: 262144

(Isso está no Mac OS X 10.7.3; muitos desses tipos de limites foram aumentados gradualmente ao longo da vida útil do OS X).

    
por 20.02.2012 / 04:18
3

Isso não é um problema, mas um limite. Você pode usar algo assim:

find ./ -exec rm -rf {} \;

Ou qual é a questão de não usar uma alternativa que faça o trabalho?

    
por 22.02.2012 / 01:25