como manter o número de arquivos em uma pasta menor que um limite

0

Estou tentando criar um script bash para limitar o número de arquivos a um limite de 50000. Eu quero executar o script bash no crontab a cada 5 min para que ele possa continuar excluindo os arquivos antigos quando o número de arquivos for além do limite. Eu escrevi código, mas não funciona como pretendido. Ele excluiu todos os arquivos em vez de apenas os antigos. Eu pretendia excluir o último elemento até o número de arquivos ficar abaixo do limite. Existe uma maneira mais fácil de fazer esse processo?

LIMIT=50000

NUMBER=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap" wc -l)

if [[ $NUMBER -gt $LIMIT ]]  #if number greater than limit
then

FILES=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap")


for f in "${FILES[@]}"

 do

rm $FILES[$NUMBER-$f]
done
 #delete the originals
fi
    
por Jishnu U Nair 27.01.2014 / 11:01

1 resposta

0

Eu acho que sua variável FILES está errada. Ele encontra todos os arquivos não apenas os mais antigos. você poderia usar algo assim:

find /mnt/capture/PPO/ -maxdepth 1 -type f -name "*.pcap" -print0 | xargs -0 ls -lt | tail -5 | awk '{print $9}'

Isto encontra os 5 arquivos mais antigos em seu diretório. Você pode então alterar esse número de acordo com suas necessidades.

    
por 27.01.2014 / 13:53