Eu tenho um diretório de arquivo de log que contém 82.000 arquivos e diretórios (cerca de meio a meio).
Preciso excluir todos os arquivos e diretórios com mais de 3 dias.
Em um diretório com 37.000 arquivos, consegui fazer isso com:
find * -mtime +3 -exec rm {} \;
Mas com 82.000 arquivos / diretórios, recebo o erro:
/ usr / bin / find: Lista de argumentos muito longa
Como posso contornar esse erro para excluir todos os arquivos / diretórios com mais de 3 dias?
linux
file-io
resource-cleanup
Edward Tanguay
fonte
fonte
find -mtime +3 -exec rm {} +
?find * -mtime +3 |xargs rm
resolveria esse problema.find *
.find .
é melhor. O shell globing expande o*
para uma lista enorme de arquivos e diretórios.Respostas:
Para excluir todos os arquivos e diretórios do diretório atual :
Ou, alternativamente, mais em linha com o comando original do OP:
fonte
--
depois de rm, comofind . -mtime +3 -exec rm -- {} \;
--
serve.Também pode usar:
Para não excluir o diretório de destino
fonte
Outra solução para a questão original, esp. útil se você deseja remover apenas ALGUNS dos arquivos mais antigos em uma pasta, seria algo assim:
e assim por diante .. Cita curingas de shell de bloco, permitindo que você "encontre" milhões de arquivos :)
fonte