#!/usr/bin/env bash set -euo pipefail BASE_DIR="$(dirname "$0")" cleanup_dir() { local LABEL="$1" local DIR="$2" if [[ ! -d "$DIR" ]]; then echo "Nessuna cartella $DIR trovata." return fi mapfile -t RUNS < <(find "$DIR" -mindepth 1 -maxdepth 1 -type d | sort) if [[ ${#RUNS[@]} -eq 0 ]]; then echo "Nessun risultato $LABEL da cancellare." return fi echo "" echo "Risultati $LABEL disponibili:" for i in "${!RUNS[@]}"; do printf " %2d. %s\n" "$((i+1))" "$(basename "${RUNS[$i]}")" done echo "" echo "a. Cancella tutti" echo "s. Selezione manuale" echo "0. Annulla" echo "" read -rp "Scelta [$LABEL]: " MODE case "$MODE" in a|A) read -rp "Confermi la cancellazione di ${#RUNS[@]} cartelle $LABEL? [s/N] " CONFIRM if [[ "${CONFIRM,,}" == "s" ]]; then rm -rf "${RUNS[@]}" echo "Cancellati ${#RUNS[@]} risultati $LABEL." else echo "Annullato." fi ;; s|S) read -rp "Numeri da cancellare (es. 1 3 5): " -a CHOICES TO_DELETE=() for N in "${CHOICES[@]}"; do if [[ "$N" =~ ^[0-9]+$ ]] && (( N >= 1 && N <= ${#RUNS[@]} )); then TO_DELETE+=("${RUNS[$((N-1))]}") else echo "Indice non valido: $N (ignorato)" fi done if [[ ${#TO_DELETE[@]} -eq 0 ]]; then echo "Nessuna selezione valida." return fi echo "Verranno cancellati:" for D in "${TO_DELETE[@]}"; do echo " - $(basename "$D")" done read -rp "Confermi? [s/N] " CONFIRM if [[ "${CONFIRM,,}" == "s" ]]; then rm -rf "${TO_DELETE[@]}" echo "Cancellati ${#TO_DELETE[@]} risultati $LABEL." else echo "Annullato." fi ;; 0|"") echo "Annullato." ;; *) echo "Scelta non valida." ;; esac } echo "Cosa vuoi ripulire?" echo " 1. Risultati FDM (results/fdm/)" echo " 2. Risultati PINN (results/pinn/)" echo " 3. Entrambi" echo " 0. Annulla" echo "" read -rp "Scelta: " CHOICE case "$CHOICE" in 1) cleanup_dir "FDM" "$BASE_DIR/results/fdm" ;; 2) cleanup_dir "PINN" "$BASE_DIR/results/pinn" ;; 3) cleanup_dir "FDM" "$BASE_DIR/results/fdm" cleanup_dir "PINN" "$BASE_DIR/results/pinn" ;; 0|"") echo "Annullato." ;; *) echo "Scelta non valida." ; exit 1 ;; esac