![cómo mantener el número de archivos en una carpeta por debajo de un límite](https://rvso.com/image/1395385/c%C3%B3mo%20mantener%20el%20n%C3%BAmero%20de%20archivos%20en%20una%20carpeta%20por%20debajo%20de%20un%20l%C3%ADmite.png)
Estoy intentando crear un script bash para limitar la cantidad de archivos a un límite de 50000. Quiero ejecutar el script bash en crontab cada 5 minutos para que pueda seguir eliminando los archivos antiguos cuando la cantidad de archivos supere el límite. . He escrito código, pero no funciona como estaba previsto. Eliminó todos los archivos en lugar de solo los antiguos. Tenía la intención de eliminar el último elemento hasta que la cantidad de archivos baje del límite. ¿Existe una forma más sencilla de realizar este proceso?
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
Respuesta1
Creo que tu variable ARCHIVOS está mal. Encuentra todos los archivos, no sólo los más antiguos. podrías usar algo como esto:
find /mnt/capture/PPO/ -maxdepth 1 -type f -name "*.pcap" -print0 | xargs -0 ls -lt | tail -5 | awk '{print $9}'
Esto encuentra los 5 archivos más antiguos en su directorio. Luego puede cambiar ese número según sus necesidades.