Script:

#!/bin/bash

# Diretório base
base_dir="/home/andrisoft/graphs"

# Data de referência (06/12/2024)
reference_date="2024-12-06"

# Contador para lotes de 100 arquivos
count=0
batch_size=100

# Array para armazenar arquivos a serem removidos
files_to_remove=()

# Encontra arquivos .rrd com data de modificação inferior à data de referência
while IFS= read -r -d '' file; do
    # Verifica a data de modificação
    mod_date=$(stat --format="%y" "$file" | cut -d " " -f1)if [[ "$mod_date" < "$reference_date" ]]; then
        files_to_remove+=("$file")
        count=$((count + 1))# Exibe lotes de 100 em 100 arquivos
        if ((count % batch_size == 0)); then
            echo "Lote de $batch_size arquivos:"
            for ((i = count - batch_size; i < count; i++)); do
                echo "${files_to_remove[$i]}"
            done
            read -p "Pressione Enter para continuar ou Ctrl+C para sair..."
        fi
    fi
done < <(find "$base_dir" -type f -name "*.rrd" -print0)

# Exibe os arquivos restantes (se houver)
if ((count % batch_size != 0)); then
    echo "Último lote de arquivos:"
    for ((i = count - (count % batch_size); i < count; i++)); do
        echo "${files_to_remove[$i]}"
    done
fi

# Confirmação para remoção
read -p "Deseja realmente remover $count arquivos? (s/n): " confirm
if [[ "$confirm" == "s" || "$confirm" == "S" ]]; then
    for file in "${files_to_remove[@]}"; do
        rm -f "$file"
    done
    echo "$count arquivos removidos."
else
    echo "Operação cancelada."
fi

Explicação do script:

  1. base_dir="/home/andrisoft/graphs":
  2. reference_date="2024-12-06":
  3. find "$base_dir" -type f -name "*.rrd" -print0:
  4. stat --format="%y" "$file":
  5. if [[ "$mod_date" < "$reference_date" ]]; then:
  6. Lotes de 100 em 100:
  7. Confirmação para remoção:
  8. rm -f "$file":

Como usar:

  1. Salve o script em um arquivo, por exemplo, remover_rrd.sh.

  2. Torne o script executável:

    chmod +x remover_rrd.sh
    
  3. Execute o script:

    ./remover_rrd.sh