web-dev-qa-db-ja.com

3年以上前のファイルを削除する

2年以上前のディレクトリ内のファイルを削除する必要があります。最新のファイルを保持し、古いファイルを削除することが非常に重要です。

私はこれを検索して見つけました。

find /path/to/files* -mtime +365 -exec rm {} \;

数を掛けるだけでいいですか?

find /path/to/files* -mtime +1095 -exec rm {} \;

ファイル名を削除するときにファイル名を画面に出力するスイッチを追加する方法はありますか?それが私が期待していることをしていることを確認するために?

私もこれを見つけました:

find /rec -mtime +365 -print0 | xargs -0 rm -f

2つの間に大きな違いはありますか?一方はもう一方よりも優れていますか?私が読んだことは、xargsの方が速いと言っています。 mtimeの数値を2年目または3年目に掛けることはできますか?

そして最後に、コードをそのまま、毎日実行できるcronジョブに配置できるでしょうか。

ありがとうございました!

8
Joshua Haws

数を掛けるだけでいいですか?

find /path/to/files -mtime +1095 -exec rm {} \;

はい。そして、削除する前に「エコー」する

find /path/to/files -mtime +1095 -print

次に、ファイルを削除するための-exec rm {} \;のバージョン(準備ができたら)。

7
Elliott Frisch
find /path/to/files* -mtime +1095 -exec rm {} \;

これは正常に機能するはずです。コマンドで見つかったファイルを一覧表示するだけで、これをドライランで実行できます。

find /path/to/files* -mtime +1095 -exec ls {} \;

安全のために、他のものが削除されないように-typeも追加します。

find /path/to/files* -type f -mtime +1095 -exec rm {} \;
1
Voycey

あなたの質問の2番目の部分に答えるため。

はい、-execまたはxargsの使用には大きな違いがあります。 -execは、見つかったすべてのファイルに対してrmの新しいプロセスを開始します。これにより多くのオーバーヘッドが発生し、多くのファイルを削除するとシステムの速度が大幅に低下する可能性があります。

xargsは、できるだけ多くのファイルを含むコマンドラインを作成するため、必要な数のrmプロセスのみを作成します。したがって、少数のrmプロセスのみが作成されます。

ただし、削除は保存されていないため、どちらも-deleteよりも優れています

1
Andreas