BASH - 删除超过3个月的文件?

5 linux bash centos find delete-file

删除3个月以上的文件如何?

90天我知道:

find /tmp/*.log -mtime +90 -type f -delete
Run Code Online (Sandbox Code Playgroud)

但我怎么知道3个月总是等于90天?确切的天数?是否有更好的方式告诉-mtime要遵循months

anu*_*ava 8

如果您想要3个月的确切天数,那么您可以使用:

days=$(( ( $(date '+%s') - $(date -d '3 months ago' '+%s') ) / 86400 ))
Run Code Online (Sandbox Code Playgroud)

并将其用作:

find /tmp/*.log -mtime +$days -type f -delete
Run Code Online (Sandbox Code Playgroud)

或直接在find:

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