Você pode usar rm -v
para ter rm
imprimir uma linha por arquivo excluída. Dessa forma, você pode ver que rm
está de fato trabalhando para excluir arquivos. Mas se você tiver bilhões de arquivos, tudo o que verá é que rm
ainda está funcionando. Você não terá ideia de quantos arquivos já foram excluídos e quantos ainda restam.
A ferramenta pv
pode ajudar você com uma estimativa de progresso.
link
Veja como você chamaria rm
com pv
com a saída de exemplo
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
Neste exemplo inventado, eu disse a pv
que há 1000
arquivos. A saída de pv
mostra que 562 já foram excluídos, o tempo decorrido é de 7 segundos e a estimativa a concluir é de 5 segundos.
Algumas explicações:
-
pv -l
faz com que pv
conte por novas linhas em vez de bytes
-
pv -s number
informa pv
do total para poder dar uma estimativa.
- O redirecionamento para
logfile
no final é para saída limpa. Caso contrário, a linha de status de pv
será misturada com a saída de rm -v
. Bônus: você terá um arquivo de log do que foi excluído. Mas cuidado, o arquivo ficará enorme. Você também pode redirecionar para /dev/null
se não precisar de um log.
Para obter o número de arquivos, você pode usar este comando:
$ find dirname | wc -l
Isso também pode levar muito tempo se houver bilhões de arquivos. Você também pode usar pv
aqui para ver quanto conta
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Aqui diz que demorou 4 segundos para contar 278k arquivos. A contagem exata no final ( 278044
) é a saída de wc -l
.
Se você não quiser esperar pela contagem, poderá adivinhar o número de arquivos ou usar pv
sem estimativa:
$ rm -rv dirname | pv -l > logfile
Assim você não terá nenhuma estimativa para terminar, mas pelo menos você verá quantos arquivos já foram deletados. Redirecione para /dev/null
se você não precisa do arquivo de log.
Nitpick:
- você realmente precisa de
sudo
?
- geralmente
rm -r
é suficiente para excluir recursivamente. não há necessidade de rm -f
.