Eu tenho uma pasta com 137.795 arquivos. Eu preciso deletar todos eles. Quando eu corro rm *
eu consigo -bash: /bin/rm: Argument list too long
. Como faço para superar esse erro?
Responder1
Como posso ver, você não precisa remover seu dir , apenas os arquivos dentro dele. Então você pode recriá-lo
rm -r /path/to/dir && mkdir /path/to/dir
ou até mesmo excluir apenas os arquivos dentro
find /path/to/dir -type f -delete
afair primeiro funciona mais rápido.
Atualização. Observe que essa forma find
pode não ser ideal do ponto de vista do consumo de espaço, pois o tamanho do diretório será reduzido somente após fsck
.Detalhes.
Responder2
Solução alternativa nº 1:
find /path/to/dir -delete
Solução alternativa nº 2:
rm a*;
rm b*;
rm c*;
etc
Responder3
Usar find
é provavelmente a melhor aposta. Alguns dos problemas com as outras respostas são não excluir tudo dentro do diretório ou excluir o próprio diretório. Você pode usar ls
with 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 superior ( .
). Ele -depth
examinará primeiro os diretórios, o que evitará um erro de 'diretório não vazio'. Se o -not
argumento não estiver disponível em seu sistema, use !
.