GNU/Linux >> Znalost Linux >  >> Linux

Mazání souborů starších než 30 dní na základě data souboru

Zde je bash řešení.

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

Zakončil jsem to "echo rm $file " namísto skutečného smazání souborů to otestuje výsledek dříve.


S zsh :

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

Odstraňte echo -E když je šťastný.

Na systému GNU a s GNU shellem (bash ), můžete udělat něco podobného s:

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. Jak smazat všechny soubory starší než X počet dní v Linuxu?

  2. Proč Find -mtime +1 vrací pouze soubory starší než 2 dny?

  3. Soubory Cat ve specifickém pořadí na základě čísla v názvu souboru?

  1. Jak nastavit cron pro každodenní zálohování databáze MySQL a odstranění starších souborů záloh, které jsou starší než 10 dní?

  2. Jak odstranit soubory starší než N dní pomocí tmpreaper v Linuxu

  3. najít a odstranit soubor nebo složku starší než x dní

  1. Jak v Linuxu odstraníte soubory starší než konkrétní datum?

  2. Najděte všechny soubory starší než jedna minuta

  3. Bezvadné mazání souborů starších než 30 dní