O script de shell a seguir exclui o arquivo mais antigo da pasta especificada repetidamente até que o tamanho da pasta esteja abaixo do total máximo especificado.
Suposições:
- Você tem o GNU find instalado, por exemplo
findutils
do Homebrew - Não funciona quando arquivos são adicionados mais rapidamente do que o tamanho da pasta pode ser determinado
#!/bin/bash
# defensive
set -o nounset
set -o errexit
set -o pipefail
# directory to search
DIR=/Users/danielbeck/test
# max folder size in KB
MAXSIZE=1000
# as long as folder size is greater than limit
while [[ $( du -sk "$DIR" | cut -f1 ) -gt $MAXSIZE ]] ; do
# find the oldest file (modification time counts)
FILE="$( gfind "$DIR" -type f -printf '%T+ %p\n' | sort -n | head -n1 | cut -d' ' -f2- )"
# delete it
/bin/rm -v "$FILE"
done
Você pode modificar este script um pouco para que ele seja executado de forma persistente em segundo plano (usando, por exemplo, screen
) ou para que ele seja iniciado a cada minuto (ou em intervalos de alguns minutos) usando, por exemplo, cron
.