Linux skypty – Usuwanie katalogów starszych niż …

Prosty skrypt, który w przekazanej do skryptu ścieżce wyszukuje i usuwa katalogi starsze niż to podano w stałej ILE.

#!/bin/bash
ILE=3               #dni
GDZIE=$1            #katalog do przeszukania zakładamy ze są tu tylko katalogi
DATA=`date +%-j`    #czyli dziś mamy $DATA dzień roku
for i in $GDZIE/* ; do
  DATA_PLIKU=`ls -Gd --full-time $i`;   # --full-time zwraca datę idealna do przekazania do programu data
  PLUS=`expr index "$DATA_PLIKU" "\+"`; # - to co zwrócił ls trzeba obciąć do samej daty więc ustalamy od którego znaku tniemy
  PLUS=$[ $PLUS - 31 ]                  
  DATA_PLIKU=`date +%-j -d "${DATA_PLIKU:$PLUS:35}"` # i już wiemy którego dnia roku założono katalog
  if (( $DATA \>= $DATA_PLIKU )); then               # problem zawsze stanowi zmiana roku więc staramy się to wykryć
    if (( (($DATA - $DATA_PLIKU)) \> $ILE )); then
       rm -R $i
    fi
  else
    if (( ((365 + $DATA - $DATA_PLIKU)) \> $ILE )); then
       rm -R $i
    fi
  fi
done

 

Dodaj komentarz