日付で数十万個のファイルを削除する[閉じる]

日付で数十万個のファイルを削除する[閉じる]

私は別のディレクトリにあるファイルの寿命を確認し、有効期限が過ぎたファイルを削除できるスクリプトが必要です。作成日が異なる数十万のファイルがある可能性があります。一部のディレクトリにはファイルがあまりありません。約100のディレクトリがあります。これらのディレクトリは有効期間が異なります。私は設定にYAMLを使用し、スクリプト言語としてPerl 5またはPython 3を使用することを検討しています。どちらが仕事をより早く終了しますか?これは数時間(3〜5)で完了できますか、それとも数日かかりますか?

このスクリプトはLinuxで実行されます。

ベストアンサー1

これらのディレクトリは有効期間が異なります。

したがって、ループと最大値が必要です。 100通貨find

find ... -deleteその方法(または他の方法を直接使用)を使用すると、数秒しかかかりません。どのようにこれを補助といいます。

構成ファイルは2列ファイルに簡略化できます。

1つの最適化方法は、同じexpを持つディレクトリをグループ化することです。たとえば、一緒にデートしてみてください。

find dir1 dir2 dir3 -type f -mtime  +7 -delete

(少なくとも8日を過ぎた通常のファイルは、最後の修正時刻に基づいて削除されます。)

find dir4 dir5 dir6 -type f -mtime +30 -delete

(少なくとも31日を過ぎた一般ファイルは、最後の修正時刻に基づいて削除されます。)


したがって、Perlは必要ありませんが、快適なYAML解析といくつかのリストの並べ替えにはもちろんです。


考えてみてください。 「find-ML」を直接使用できます。

find dir1 dir2 dir3\
 d7 d13\
 d42 d44 d46\
 -type f -mtime  +7 -delete


find dir4 dir5 dir6\
 d11 d19\
 d61 d62 d63\
 -type f -mtime  +30 -delete


find ...\
 ...\
 -type f -mtime  +XY -delete

データとコードを混在させるのは見苦しいと言うかもしれませんが、あなたの場合、95%がデータです。このコードは、YAMLファイルと同様に、曜日に基づいてディレクトリをグループ化するためのものです。ディレクトリの有効期限を割り当てるためのいくつかの規則がありますか?あるいは、とにかく手でする必要があります。なぜそれほど簡単ではないのですか? (設定・メンテナンスに少し時間がかかります)

おすすめ記事