日付別に多数のファイルを削除する最良の方法

日付別に多数のファイルを削除する最良の方法

そのため、2番目に作成され、保存する必要がある多くのファイルがあるフォルダがあり、90日後にのみ削除できます。推測できるように、多くのファイルを生成し、その後は90日から90日を過ぎたファイルを削除できました。しかし、ファイルが多すぎてシステム内のリストが大きすぎて削除できないと文句を言うので、これらのファイルを検索する部分で停止しました。

これを通過できる最良の解決策は何ですか?ファイル名はタイムスタンプパターンなのでそれで始めることができますが、しばらくしてすべてのファイルが削除されたことを確認したいと思います。

私はこれらの方法を試しました

rm -rf *
find /path/to/files/ -type f -name '*.ts' -mtime +90 -exec rm {} \; 

また、ファイル名で削除するスクリプトを作成できましたが、この方法ではすべてのファイルが削除されることを保証することはできません。

答え1

ファイルが最初に作成されてから変更されていない場合は、90日以上変更されていない場合は削除できます。

find /path/to/folder ! -type d -mtime +90 -delete

または

find /path/to/folder ! -type d -mtime +90 -exec rm -f {} +

findこの-deleteタスクをサポートしていないバージョンの場合)

セキュリティ上の理由から、まずこのコマンドの非破壊バージョンを使用し、削除する内容が正しく削除されていることを確認する必要があります。特に、cronこれと同様の手段で自動化したい場合は、さらにそうです。例えば:

find /path/to/folder ! -type d -mtime +90 -print

参考にして-mtime +90確認してください時間の変更ファイルとリターン本物整数日数(86400秒単位)で下げると、年齢は次のようになります。厳しく90より大きい場合、最後に変更された日付が91日以上のファイルが一致します。

答え2

免責事項:私は現在著者です。生皮右回転)(望むよりhttps://github.com/raforg/rawhide)。

そして生皮右回転) 次のようにできます。

rh -UUU /path/to/files 'f && "*.ts" && old(90*days)'

-UUU一致するファイルのリンクを解除/削除/削除します。

/path/to/files検索パスです。

残りは検索基準だけです。

f一般ファイルを一致させます。

"*.ts"名前が.で終わるファイルと一致します.ts

old(90*days)少なくとも90日前に最後に変更されたファイルと一致します。

答え3

以前の回答によれば、ディレクトリを削除する必要がある場合はオプションを使用できます-maxdepth

削除するアイテムをプレビューします。

find . -maxdepth 1 -mtime +1 -print

すべて削除してください。

find . -maxdepth 1 -mtime +1 -exec rm -rf {} +

関連情報