คุณสามารถลองดูว่าวันที่ทำงานอย่างไรโดยทำสิ่งต่อไปนี้:
date -d "$(date -d "Mar 31 2019" +%F) +1 month ago"
Sun Mar 3 00:00:00 EET 2019
ดังนั้นฉันคิดว่าตามเดือนที่ผ่านมา (ไม่ใช่ curent หากเป็นมีนาคม) ลดจำนวนวันจากเดือนที่แล้วจากเดือนที่แล้ว
คุณสามารถลองใช้ไวยากรณ์ต่อไปนี้เพื่อลบไฟล์ที่เก่ากว่าแล้วใช้เวลาหลายวัน (ในตัวอย่างการร้อง 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}'
การค้นหาจำนวนวันสำหรับเดือนที่ผ่านมา:
echo "$ (cal $ (วันที่ +% m) $ (วันที่ +% y) | egrep -v" $ (วันที่ +% y) | Su "| xargs | awk '{พิมพ์ $ NF}') -" $ ( cal $ (วันที่ -d "+1 เดือนก่อน" +% m) $ (วันที่ +% y) | egrep -v "$ (วันที่ +% y) | Su" | xargs | awk '{พิมพ์ $ NF}') | ก่อนคริสต์ศักราช
ดังนั้นตอนนี้เราพบความแตกต่างระหว่างสองเดือน:
echo "$ (cal $ (วันที่ +% m) $ (วันที่ +% y) | egrep -v" $ (วันที่ +% y) | Su "| xargs | awk '{พิมพ์ $ NF}') -" $ ( cal $ (วันที่ -d "+1 เดือนก่อน" +% m) $ (วันที่ +% y) | egrep -v "$ (วันที่ +% y) | Su" | xargs | awk '{พิมพ์ $ 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
คุณยังสามารถเพิ่มตัวแปรใน "/ path / to / folde / with / arhives /"
สรุป: หากคุณต้องการลบไฟล์ที่เก่ากว่าหนึ่งเดือน (แน่นอน) คุณต้องปรับจำนวนวันที่แน่นอนหากคุณใช้คำสั่ง "date" และ "+1 เดือนที่ผ่านมา"