From 1237a572903963e855869b04ff3c96080c38c7e5 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Thu, 14 May 2026 15:50:42 +0200 Subject: [PATCH] clear.sh: aggiunge menu per ripulire risultati PINN oltre a FDM Estrae la logica interattiva in cleanup_dir() e aggiunge un menu di primo livello con le opzioni: FDM, PINN, Entrambi, Annulla. Co-Authored-By: Claude Sonnet 4.6 --- clear.sh | 142 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 83 insertions(+), 59 deletions(-) diff --git a/clear.sh b/clear.sh index 2c1e60a..1c7e302 100755 --- a/clear.sh +++ b/clear.sh @@ -1,72 +1,96 @@ #!/usr/bin/env bash set -euo pipefail -RESULTS_DIR="$(dirname "$0")/results/fdm" +BASE_DIR="$(dirname "$0")" -if [[ ! -d "$RESULTS_DIR" ]]; then - echo "Nessuna cartella results/fdm trovata." - exit 0 -fi +cleanup_dir() { + local LABEL="$1" + local DIR="$2" -mapfile -t RUNS < <(find "$RESULTS_DIR" -mindepth 1 -maxdepth 1 -type d | sort) + if [[ ! -d "$DIR" ]]; then + echo "Nessuna cartella $DIR trovata." + return + fi -if [[ ${#RUNS[@]} -eq 0 ]]; then - echo "Nessun risultato da cancellare." - exit 0 -fi + mapfile -t RUNS < <(find "$DIR" -mindepth 1 -maxdepth 1 -type d | sort) -echo "Risultati 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: " MODE + if [[ ${#RUNS[@]} -eq 0 ]]; then + echo "Nessun risultato $LABEL da cancellare." + return + fi -case "$MODE" in - a|A) - read -rp "Confermi la cancellazione di ${#RUNS[@]} cartelle? [s/N] " CONFIRM - if [[ "${CONFIRM,,}" == "s" ]]; then - rm -rf "${RUNS[@]}" - echo "Cancellati ${#RUNS[@]} risultati." - 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))]}") + 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 "Indice non valido: $N (ignorato)" + echo "Annullato." fi - done - if [[ ${#TO_DELETE[@]} -eq 0 ]]; then - echo "Nessuna selezione valida." - exit 0 - 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." - else + ;; + 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." - fi - ;; - 0|"") - echo "Annullato." - ;; - *) - echo "Scelta non valida." - exit 1 + ;; + *) + 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