GNU/Linux >> Linux Esercitazione >  >> Linux

Eliminazione di file più vecchi di 30 giorni in base al nome del file come data

Ecco una soluzione bash.

f30days=$(date +%s --date="-30 days")
for file in 20*.txt; do
    fdate=$(echo $file | tr _ -)
    fsec=$(date +%s --date=${fdate/.txt/})
    if [[ $fsec -lt $f30days ]]; then
        echo "rm $file"
    fi
done

Ho finito con "echo rm $file " invece di eliminare davvero i tuoi file, questo testerà prima il risultato.


Con zsh :

zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)

Rimuovi il echo -E quando felice.

Su un sistema GNU e con la shell GNU (bash ), potresti fare qualcosa di simile a:

start=$(date -d '30 days ago' +%Y_%m_%d.txt)
list=()
shopt -s nullglob
for file in 2*.txt; do
  [[ $file > $start ]] && list+=("$file")
done
if (( ${#list[@]} > 0)); then
  echo -E rm -i "${list[@]}"
fi

Linux
  1. Come eliminare tutti i file più vecchi di X numero di giorni in Linux?

  2. Perché Find -mtime +1 restituisce solo file più vecchi di 2 giorni?

  3. File Cat in un ordine specifico in base al numero nel nome del file?

  4. trova ed elimina file o cartelle più vecchi di x giorni

  5. Come si eliminano i file più vecchi di una data specifica in Linux?

Come eliminare file più vecchi di giorni specificati in Linux

Come verificare se esiste un file in una directory specifica in uno script bash?

Script bash per eliminare file più vecchi di x giorni con sottodirectory

Trova directory con tutti i file all'interno più vecchi di X?

Ricerca ed eliminazione di file con una data specifica

Trovare file più vecchi di x giorni su un sistema con un busybox ridotto