आप यह देखने की कोशिश कर सकते हैं कि निम्नलिखित द्वारा तिथि कैसे काम करती है:
date -d "$(date -d "Mar 31 2019" +%F) +1 month ago"
Sun Mar 3 00:00:00 EET 2019
इसलिए मुझे लगता है कि पिछले महीने के आधार पर (नहीं तो उत्सुक है, अगर वह मार्च है), पिछले महीने से घटते महीने की संख्या को घटाता है।
आप पुरानी फ़ाइलों को हटाने के लिए निम्न सिंटैक्स आज़मा सकते हैं, फिर कई दिन (उदाहरण के लिए 31 दिनों में)। समस्या को हल करने के लिए एक पंक्ति (यह एक सरल दृष्टिकोण के लिए है)।
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +31 -delete
अधिक विस्तृत दृष्टिकोण के लिए आप कुछ इस तरह से भी कर सकते हैं: 1. क्यूरेंट महीने के लिए दिनों की संख्या ढूँढना:
cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}'
पिछले महीने के दिनों की संख्या का पता लगाना:
इको "$ (कैल $ (तिथि +% m) $ (दिनांक +% y) | उदा। -v" $ (दिनांक +% y) | सु "| xargs | awk '{print $ NF}') -" $ cal $ (दिनांक -d "+1 महीने पहले" +% m) $ (दिनांक +% y) | egrep -v "$ (दिनांक +% y) | सु" | xargs | awk '{print $ NF}') | बीसी
तो अब हम उन दो महीनों के बीच अंतर पाते हैं:
इको "$ (कैल $ (तिथि +% m) $ (दिनांक +% y) | उदा। -v" $ (दिनांक +% y) | सु "| xargs | awk '{print $ NF}') -" $ cal $ (दिनांक -d "+1 महीने पहले" +% m) $ (दिनांक +% y) | egrep -v "$ (दिनांक +% y) | सु" | xargs | awk '{print $ NF}') | बीसी
अब इस 3 चरणों में कुछ चर असाइन करते हैं। चरण 1 चर नाम: FCM चरण 2 चर नाम: FLM चरण 3 चर 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 0 (शून्य) के बराबर है और $ FCM और $ FLM के अंतर के आधार पर हटाएं:
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
आप "/ पाथ / टू / फोल्ड / विथ / अर्हाइव्स" के लिए एक वैरिएबल भी जोड़ सकते हैं।
निष्कर्ष: यदि आप पुरानी फ़ाइलों को हटाना चाहते हैं तो एक महीने (बिल्कुल), आपको "डेट" कमांड और "+1 महीने पहले" का उपयोग करते हुए सटीक दिनों को समायोजित करने की आवश्यकता है।