Python

按日期刪除數十萬個文件

  • December 12, 2019

我想要一個可以檢查不同目錄中文件的年齡並刪除超過過期時間的腳本。可能有數十萬個具有不同創建日期的文件。有些目錄沒有那麼多文件。大約有 100 個目錄。目錄具有不同的到期期限。我正在考慮將 YAML 用於配置,將 Perl 5 或 Python 3 作為腳本語言。哪個可以更快地完成工作?這可以在幾個小時(3-5)內完成還是需要幾天?

該腳本將在 Linux 上執行。

目錄具有不同的到期期限。

所以你需要一個循環和最大值。100 次通話find

find ... -delete如果您使用該方法(或其他直接方法),我認為這只需幾秒鐘。如何呼叫它是次要的。

配置文件可以簡化為 2 列文件。

一種優化方法是使用相同的 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 文件一樣。將到期日期分配給目錄可能有一些規則?或者無論如何都必須手動完成:為什麼不那麼直接呢?(這需要一些時間來設置,並且可能需要維護)

引用自:https://unix.stackexchange.com/questions/556906