Anda dapat mencoba melihat bagaimana tanggal bekerja dengan yang berikut:
date -d "$(date -d "Mar 31 2019" +%F) +1 month ago"
Sun Mar 3 00:00:00 EET 2019
Jadi saya pikir berdasarkan pada curent bulan lalu (bukan curent, kalau itu Maret), mengurangi jumlah hari dari bulan terakhir dari bulan curent.
Anda dapat mencoba sintaks berikut untuk menghapus file yang lebih lama dari beberapa hari (dalam contoh di bawah 31 hari). Satu baris untuk menyelesaikan masalah (ini untuk pendekatan sederhana).
find /path/to/folder/with/arhives/ -mindepth 1 -mtime +31 -delete
Untuk pendekatan yang lebih rinci, Anda juga dapat melakukan sesuatu seperti ini: 1. Menemukan jumlah hari untuk bulan terakhir:
cal $(date +%m) $(date +%y) | egrep -v "$(date +%y)|Su" | xargs | awk '{print $NF}'
Menemukan jumlah hari untuk bulan terakhir:
echo "$ (cal $ (tanggal +% m) $ (tanggal +% y) | egrep -v" $ (tanggal +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (tanggal -d "+1 bulan lalu" +% m) $ (tanggal +% y) | egrep -v "$ (tanggal +% y) | Su" | xargs | awk '{print $ NF}') | bc
Jadi sekarang kita menemukan perbedaan antara dua bulan itu:
echo "$ (cal $ (tanggal +% m) $ (tanggal +% y) | egrep -v" $ (tanggal +% y) | Su "| xargs | awk '{print $ NF}') -" $ ( cal $ (tanggal -d "+1 bulan lalu" +% m) $ (tanggal +% y) | egrep -v "$ (tanggal +% y) | Su" | xargs | awk '{print $ NF}') | bc
Sekarang mari kita tetapkan beberapa variabel ke 3 langkah ini. Langkah 1 Nama Variabel: FCM Langkah 2 Nama Variabel: FLM Langkah 3 Variabel 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)
Verifikasi apakah $ DCL sama dengan 0 (nol) dan hapus berdasarkan perbedaan antara $ FCM dan $ 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
Anda juga dapat menambahkan variabel ke "/ path / ke / folde / with / arhives /".
Kesimpulan: Jika Anda ingin menghapus file yang lebih lama dari satu bulan (tepatnya), Anda perlu menyesuaikan jumlah hari yang tepat, jika Anda menggunakan perintah "date" dan "+1 month ago".