web-dev-qa-db-ja.com

BASH-3か月以上前のファイルを削除しますか?

3か月以上前のファイルを削除するにはどうすればよいですか?

90日間私は知っています:

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

しかし、3か月が常に90日に等しいことをどうやって知ることができますか?正確な日数は? -mtimemonthsに従うように指示するより良い方法はありますか?

6
user285594

3か月間の正確な日数が必要な場合は、次を使用できます。

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

そしてそれを次のように使用します:

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

または直接find

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