2015-06-12 80 views
0

我必須定期在7天后刪除多個文件。每個文件的刪除日期和位置都不相同。是的,我可以分別爲每個文件夾應用一個cronjob,但是tat會涉及許多cronjob(至少15個)。 爲了避免這種情況,我想創建一個腳本,它將轉到每個文件夾並刪除數據。 例如:7天后刪除文件

-rw-r--r-- 1 csbackup other 20223605295 Jun 12 06:40 IO.tgz 

正如你可以看到IO.tgz已於2015年12月6日6:40創建...現在我想在17/06/2015 00:00時刪除該文件。 ..這是我無法使用mtime的原因之一,因爲它將在7 * 24小時後完全刪除。

我在想比較文件的時間戳,但是,我的機器上沒有stat實用程序。現在它甚至允許我安裝它。

任何人都可以請指導我通過一個腳本,我可以用它來刪除n天之後

+2

使用cron,也許? – Arpith

+0

你認爲一個沒有運行的cron作業會佔用多少資源?它佔用crontab行本身使用的相同數量的磁盤空間(通常不超過80個字符)。運行時需要多少計算時間?字面上沒有。 – msw

回答

0

可以讓你想在一個文件中搜索目錄的列表。

# cat file 
/data 
/d01 
/u01/files/ 

現在您可以使用for循環來逐個刪除那些目錄中的文件。

for dir in $(cat file); do 
    find $dir -type f -mtime 7 |xargs rm -f 
done 
+2

也許會更好:'find $(cat file)-type f -mtime 7 -delete' - 你不需要''循環和'xargs'和'rm' - 'find'會做所有事情:) – uzsolt

+0

但使用mtime 7 ..不會刪除準確的7 * 24小時後文件被修改。因爲示例中的文件在上午6點被修改..但是,我想在7天后的00:00小時(按日期)刪除它 –

+0

我會建議用'-mtime + 7'來請求7天的文件*或更多*年齡... – twalberg