Tarihin nasıl çalıştığını aşağıdakilerle öğrenmeye çalışabilirsiniz:
date -d "$(date -d "Mar 31 2019" +%F) +1 month ago"
Sun Mar 3 00:00:00 EET 2019
Bu yüzden geçen ayki akıntıya dayanarak (eğer Mart ayıysa akıntı değil), aktüel aydan geçen ayın gün sayısını azalttığını düşünüyorum.
Birkaç günden eski dosyaları silmek için aşağıdaki sözdizimini deneyebilirsiniz (31 günün altındaki örnekte). Sorunu çözmek için bir satır (bu basit bir yaklaşım içindir).
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +31 -delete
Daha ayrıntılı bir yaklaşım için şöyle bir şey de yapabilirsiniz: 1. Mevcut ayın gün sayısını bulma:
cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}'
Geçen ayın gün sayısını bulma:
echo "$ (cal $ (tarih +% m) $ (tarih +% y) | egrep -v" $ (tarih +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (tarih -d "+1 ay önce" +% m) $ (tarih +% y) | egrep -v "$ (tarih +% y) | Su" | xargs | awk '{print $ NF}') | M.Ö
Şimdi bu iki ay arasındaki farkı buluyoruz:
echo "$ (cal $ (tarih +% m) $ (tarih +% y) | egrep -v" $ (tarih +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (tarih -d "+1 ay önce" +% m) $ (tarih +% y) | egrep -v "$ (tarih +% y) | Su" | xargs | awk '{print $ NF}') | M.Ö
Şimdi bu 3 adıma bazı değişkenler atayalım. Adım 1 Değişken Adı: FCM Adım 2 Değişken Adı: FLM Adım 3 Değişken NAme: DCL
FCM=$(cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}')
FLM=$(al $(date -d "+1 month ago" +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}')
DCL=$(echo "$FCM-$FLM" | bc)
$ DCL'nin 0 (sıfır) olup olmadığını doğrulayın ve $ FCM ile $ FLM arasındaki farka göre silin:
if [ $DCL -ne 0 ]; then
if [ $DCL -lt 0 ]; then
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$(echo "$DCL+$FLM" | bc) -delete
elif [ $DCL -gt 0 ]; then
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$(echo "$DCL+$FLM" | bc) -delete
fi
else
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +$FLM -delete
fi
"/ Path / to / folde / ile / arhives /" değişkenini de ekleyebilirsiniz.
Sonuç: Bir aydan eski dosyaları (tam olarak) silmek istiyorsanız, "tarih" komutunu ve "+1 ay önce" kullanıyorsanız, tam gün sayısını ayarlamanız gerekir.