I know how to delete the files which are more than 60 days old by modification time, but I want to delete files based on a timestamp in the file name.
For example, I have the below files for each day on monthly basis, and I have these files for last 3 years.
vtm_data_12month_20140301.txt
vtm_data_12month_20140301.control
vtm_mtd_20130622.txt
vtm_mtd_20130622.control
vtm_ytd_20131031.txt
vtm_ytd_20131031.control
I'd like to write a script find the all files which are more than 60 days old (based on file name) and delete them all except for last file of each month. For example in January I want to delete all but vtm_data_12month_20140131.txt
. The issue here is there is a chance that I might have files received for January 30th so in that case I should not delete the latest file but I have to delete the rest.
Please advise me how can I achieve this via shell script?
logrotate
, it's been created to do that for you without the need of scripts.