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
-mmin
Ubuntuや他のGNUベースのシステムで見られるように、ここではGNUと拡張が使用されます。-delete
find
分単位で年齢が選択されるファイルは、-mmin +60
次の整数に丸められます。厳しく60より大きい。したがって、60〜61分の間のファイルは選択されません。
これにより、タイプに関係なくすべてのファイルが削除されますが、そのタイプのファイルは削除されません。目次空でない場合。また、ディレクトリからファイルを削除すると、ディレクトリの最後の変更時刻が更新され、ファイルが処理されたことを-delete
意味します。-depth
今後find
したがって、ディレクトリから古いファイルを削除しても、そのディレクトリが起動時に1時間以上経っても削除されません。
また、次の種類のファイルについてはシンボリックリンクこれは、検討中のシンボリックリンクターゲットの寿命ではなく、シンボリックリンク自体の寿命です。
削除のみ定期的なファイル(fifo、ソケット、ディレクトリ、シンボリックリンクなどを含む他のすべての種類のファイルを除く)-type f
または-delete
。! -type d
目次。