年齢によるファイルの削除


16

N日以内に変更されていないディレクトリ内のすべてのファイルを削除するコマンドはありますか?古いログをクリーンアップする必要があります。

回答:


24

これにより、5日以上経過したすべてのファイルが削除さ-name '*log'れます。より正確に設定するために、そこにa を入れてmaxdepth、findコマンドでもaを指定することもできます。

find /some/dir -type f -mtime +5 -delete


5
賢明なシステム管理者は、これが保持したいものを削除しないことを確認する-ls代わりに、予行演習を行います-delete。はい、ここでの経験から言えば。
シャドゥール

2
経験から言えば、彼らも自分の道をチェックします。かどうか、私は一度/ some/dir/バージョンをやったので。:(
ヘネス

3

with zshおよび(.m+n) glob修飾子.通常のファイルのみm+nを選択し、n日以上前に変更されたファイルを選択します。
たとえば、9日以上前に変更された現在のディレクトリ内のファイルをリストします。

print -rl -- *(.m+9)

Dドットファイルを含めるために追加します。

print -rl -- *(D.m+9)

または、再帰したい場合(および、例えばで終わるファイルのみをリストする.log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

結果に満足している場合は、print -rlと置き換えrmます。ただし、zargs多くのファイルがある場合は使用する必要があります(引数リストが長すぎるのを避けるため)。

autoload zargs
zargs ./**/*(.m+9) -- rm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.