尋找超過 6 個月的非託管文件

尋找超過 6 個月的非託管文件

我正在嘗試查找 6 個月或更長時間未碰過的所有文件。我運行了這個命令,但它只顯示 6 個月內編輯過的所有檔案。

find . -type f -mtime 183 -exec ls -latr {} \;

我怎麼能讓它持續6個月或更長時間?

答案1

-mtime 183適用於其年齡向上舍入到下一個24 小時週期等於183 的文件,因此年齡介於182*24*3600 秒(不包括)和183*24*3600 秒(包括)之間(其中秒是Unix 秒,這是有一個可變的持續時間,即地球日的86400部分,而不是 ISO 定義的秒的固定持續時間,因此所有天都是 86400 秒,我們不需要考慮閏秒。

使用-mtime +183,您將獲得其年齡向上舍入到下一個 24 小時期間嚴格大於 183 的文件,因此年齡嚴格大於 183*24*3600 秒。

請注意,24 小時期間不一定與由於部分地區實施夏令時。

對於某些find實作(FreeBSD、GNU),您也可以使用! -newermt '6 months ago'.將修改時間與作為參數給出的 imemt進行比較。mt

這將給出在 6 個月前的同一天、同一時間之前修改的文件,但對於 GNU find(與 FreeBSD 相對),它不會進行 DST 調整(在適用 DST 的時區),就是這樣為您提供如同UTC時區一樣的資訊。如果現在是 2016-07-01 13:00(夏令時),FreeBSDfind將報告最後修改的文件在 2016-01-01 13:00(冬令時間)之前,而 GNUfind將報告最後修改的文件在2016-01 -01 12 之前:00(冬季時間)。當月的 29 日、30 日或 31 日調用時也可能會有變化,而 6 個月前的月份沒有這樣的日期。

答案2

+在日期值前面新增一個。從手冊頁:

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

... When  find  figures  out
how  many  24-hour  periods  ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.

雖然這裡指的是測試,但對於和測試atime來說是一樣的。mtimectime

相關內容