Você poderia tentar desvincular o inode do diretório, mas isso deixaria uma carga inteira de arquivos órfãos que fsck
irá virar.
rm
é o melhor possível.
Algumas pessoas mencionam casos extremos em que algumas coisas são mais rápidas do que outras. Mas vamos nos certificar de que estamos comparando as melhores versões das mesmas coisas.
Se você quiser excluir um diretório e tudo nele, sugiro que você:
rm -rf path/to/directory
rm
irá internamente listar os arquivos e diretórios que serão deletados. E isso é tudo em C compilado. São essas duas razões que são mais rápidas.
Isso não é exatamente o mesmo que rm -rf path/to/directory/*
, que irá expandir no nível do shell e passar uma carga de argumentos para rm
. Então rm
tem que analisá-los e depois reciclar de cada um. Isso é muito mais lento.
Assim como um "benchmark" que compara find path/to/directory -exec {} \;
é um absurdo. Isso executa rm
uma vez por arquivo encontrado. Tão lento. O comando find xargs-style compilação de argumentos com -exec rm {} +
, mas é tão lento quanto a expansão. Você pode chamar -delete
, que usa uma chamada unlink
interna para o kernel (como rm
), mas isso só funcionará para arquivos inicialmente.
Então, para repetir, a menos que você jogue o disco em magma líquido quente, rm
é rei .
Em uma nota relacionada, diferentes sistemas de arquivos excluem coisas em taxas diferentes por causa de como estão estruturadas. Se você estiver fazendo isso regularmente, talvez queira armazenar esses arquivos em uma partição formatada no XFS, que tende a lidar com exclusões rapidamente.
Ou use um disco mais rápido. Se você tem toneladas de RAM, usar /dev/shm
(um disco RAM) pode ser uma ideia.