linuxbashcentosfinddelete-file

BASH - Delete files older than 3 months?


Delete files older than 3 months how?

For 90 days i know:

find /tmp/*.log -mtime +90 -type f -delete

But how do i know 3 months equal to always 90 days? how many exact days? Is there more better way to tell the -mtime to follow months?


Solution

  • If you want exact number of days for 3 months then you can use:

    days=$(( ( $(date '+%s') - $(date -d '3 months ago' '+%s') ) / 86400 ))
    

    and use it as:

    find /tmp/*.log -mtime +$days -type f -delete
    

    Or directly in find:

    find /tmp/*.log -type f \
    -mtime "+$(( ( $(date '+%s') - $(date -d '3 months ago' '+%s') ) / 86400 ))" -delete