Come eliminare i file quando la loro quantità raggiunge> N numero di file?


0

Ho un server di gioco. Ottiene automaticamente schermate e archivi dei giocatori su /home/gameserver/serverfiles/screenshots.

Voglio eliminare i vecchi screenshot quando raggiunge 1000. Voglio dire se sono 1000 screenshot, quando arriva un nuovo screenshot, elimina automaticamente il 1000esimo screenshot.

Come posso farlo, quali script posso usare? Qualcuno può dare suggerimenti o codici?

Nota: sto usando Ubuntu 18.04 e il mio utente del server di gioco non ha accesso sudo.

Voglio mantenere la mia cartella degli screenshot per contenere un massimo di 1000 immagini.

Risposte:


3

Supponendo che il formato sia uno qualsiasi, jpg, jpeg and pngè possibile scrivere uno script breve che conta ed elimina tutti i file se il conteggio è >=1000. Un breve esempio di lavoro sarebbe:

#!/bin/bash

count=`ls -l *.{jpg,jpeg,png} | wc -l`

if [ $count -gt 1000 ]
then 
    echo "Deleting old 1000 image files"
    for i in $(ls -lt *.{jpg,jpeg,png} | head -n 1000)
    do
        rm $i
    done
fi

È quindi possibile aggiungere questo script a crontabper eseguirlo ogni 10 minuti (ad esempio). Digita crontab -eper modificarlo.


Sì, hai ragione, modificherò lo script per la cancellazione automatica solo dei primi 1000 file quando ordinati per data
Prathu Baronia,

@Melebio Ho apportato le modifiche
Prathu Baronia,


Solo un paio di pensieri. Se si sostituisce head -n 1000con tail -n -1000il risultato sarà i file più vecchi in cui ci sono più di 1000 file (quindi se avete 1007 file, segnalerà i 7 file più vecchi, che è possibile eliminare. Anche attenzione per i nomi di file con uno spazio a loro ( potrebbe non essere rilevante per il tuo sistema), ma potresti voler citare ( ") $ i nella riga rm e la sezione $ (...)
Nick Sillito,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.