cronjobから1時間経過した特定のファイルを削除する方法は?

cronjobから1時間経過した特定のファイルを削除する方法は?

Ubuntu 20.04でcronjobを使用しています。 1時間経過したファイルとファイル名がmaster-stdout.logで始まるファイルのみを自動的に削除したいと思います。

どうすればいいですか?

find /root/logs/ * -mmin +60 -exec rm {} \;

答え1

master-stdout.log名前が次から始まり、過去1時間に変更されていないファイルを削除するには、次のように繰り返します/root/logs/

LC_ALL=C find /root/logs/ -name 'master-stdout.log*' -mmin +59 -delete

-mminUbuntuや他のGNUベースのシステムで見られるように、ここではGNUと拡張が使用されます。-deletefind

分単位で年齢が選択されるファイルは、-mmin +60次の整数に丸められます。厳しく60より大きい。したがって、60〜61分の間のファイルは選択されません。

これにより、タイプに関係なくすべてのファイルが削除されますが、そのタイプのファイルは削除されません。目次空でない場合。また、ディレクトリからファイルを削除すると、ディレクトリの最後の変更時刻が更新され、ファイルが処理されたことを-delete意味します。-depth今後findしたがって、ディレクトリから古いファイルを削除しても、そのディレクトリが起動時に1時間以上経っても削除されません。

また、次の種類のファイルについてはシンボリックリンクこれは、検討中のシンボリックリンクターゲットの寿命ではなく、シンボリックリンク自体の寿命です。

削除のみ定期的なファイル(fifo、ソケット、ディレクトリ、シンボリックリンクなどを含む他のすべての種類のファイルを除く)-type fまたは-delete! -type d目次

関連情報