Eu tenho uma pasta com 266778 subpastas. Como posso excluí-lo?
eu tentei
cd ~/.local/share/Trash/
sudo rm -rf *
mas leva muito tempo. Após 1 minuto e 25 segundos em tempo real e 0,072 segundos em tempo de usuário, ele excluiu apenas 2500 pastas. Dessa forma, levará mais de duas horas para excluir esta pasta.
Existe uma maneira mais rápida de excluir esta pasta? Por que existe uma diferença tão grande entre o tempo do usuário e o tempo real?
real 1m25.474s
user 0m0.072s
sys 0m28.142s
Eu uso o Linux 2.6.32 (Ubuntu 10.04.4 LTS).
filesystems
rm
Martin Thoma
fonte
fonte
Respostas:
Se sua versão de "find" implementa o subcomando -delete, você pode tentar
Nesse caso:
Alguns comandos, como rm, executam a maior parte de seu trabalho no kernel. Nas rotinas do sistema de arquivos, para ser exato. O tempo gasto na execução de chamadas do sistema é contabilizado dessa maneira, portanto, embora o comando "rm" seja executado por um longo período de tempo, ele não faz muito trabalho na área do usuário - as chamadas do sistema executam a maior parte do trabalho.
fonte
find ~/.local/share/Trash/*/ -delete
(é claro, isso também excluirá arquivos (e diretórios) em qualquer um desses Lixeira / * / (subdireta também))time
find directory -delete
realmente mais rápido do querm -rf directory
? Afinal, eles executam o mesmo trabalho e não há duas maneiras de fazê-lo.Depende da sua definição de rápido . As respostas já aqui oferecem uma boa solução para remover os diretórios do sistema de arquivos, mas se você realmente precisa liberar o nome do diretório o mais rápido possível, uma renomeação no mesmo sistema de arquivos é instantânea:
Tecnicamente, isso é trapaça, pois eu não acelerei a exclusão real, mas praticamente é muito útil: eu uso esse truque o tempo todo para não ter que esperar pelas operações de exclusão lenta.
fonte
mktemp
é o que eu estava tentando lembrar ...rm -rf directory
ourm -rf *
, é claro, é o método mais rápido, a menos que suarm
implementação local esteja quebrada.O uso
find
não oferece vantagens.Se isso é rápido ou lento, depende principalmente do sistema de arquivos e da implementação do SO. Portanto, a pergunta parece inadequada.
UFS e ZFS no Solaris são conhecidos por ser muito rápido com este tipo de tarefa como ambas as implementações de sistemas de arquivos incluem adiada código de exclusão de fundo que faz com que o
unlink()
ermdir()
chamadas para retornar rápido mesmo quando o objeto relacionado levará mais tempo no total.Com a exclusão em segundo plano atrasada no kernel, as atualizações de diretório também podem ser feitas rapidamente e isso ajuda a acelerar toda a operação.
fonte
Essa é apenas uma resposta parcial, esclarecendo os três valores que o comando retorna; citado na página de
time(1)
manual :fonte