#!/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
base_dir="/home/andrisoft/graphs"
:
reference_date="2024-12-06"
:
find "$base_dir" -type f -name "*.rrd" -print0
:
.rrd
no diretório e subdiretórios.print0
garante que os nomes dos arquivos sejam separados por um caractere nulo (\\0
), permitindo o tratamento correto de nomes com espaços.stat --format="%y" "$file"
:
YYYY-MM-DD
.if [[ "$mod_date" < "$reference_date" ]]; then
:
rm -f "$file"
:
Salve o script em um arquivo, por exemplo, remover_rrd.sh
.
Torne o script executável:
chmod +x remover_rrd.sh
Execute o script:
./remover_rrd.sh