如何尋找在特定時間之間發生變更的檔案?

如何尋找在特定時間之間發生變更的檔案?

我有安裝了 cygwin 的 Windows 7 盒子。我在一個根資料夾中有多個包含文件的資料夾。我想查找在特定日期時間範圍內具有時間戳記的文件清單。

答案1

您可以使用find帶有-newerXY選項的命令。

man find:

-較新的XY參考
比較目前文件的時間戳參考。這參考參數通常是文件的名稱(其時間戳之一用於比較),但它也可能是描述絕對時間的字串。X是其他字母的佔位符,這些字母選擇屬於哪個時間參考用於比較。

可能的值X如下面所述:

  • a - 目前文件的上次存取時間或參考
  • B - 目前文件的誕生時間或參考
  • c - 目前檔案的最後一個 inode 狀態變更時間或參考
  • m - 目前文件的最後修改時間或參考
  • t -參考是一個表示時間戳的字串(對於X

X引用當前文件並且參考,因此您需要使用“m”作為第一個字母(當前文件的修改日期),並使用“t”作為第二個字母(作為字串傳遞的時間戳)。範例腳本:

find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"

這會查找 2012 年 5 月 1 日至 15 日之間修改的所有文件。!(邏輯NOT)運算符反轉其後面的參數的含義 - 如果-newerXY表示“X 比 Y 新”,則! -newerXY表示“X 比Y 舊” 。


由於您使用的是 Windows,另一個選擇是使用 Powershell。這Get-ChildItemcmdlet 傳回給定資料夾中的所有檔案(如果需要,遞歸地),並且Where-Objectcmdlet 可讓您過濾其他指令的輸出。範例腳本(假設您要搜尋的目錄是目前目錄):

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }

這將返回 2012 年 5 月 1 日至 15 日之間修改的所有CreationTime文件LastWriteTime。過濾!$_.PSIsContainer器僅傳回檔案(PSIsContainer對於資料夾來說是這樣,感嘆號又是邏輯NOT運算子)。

答案2

您可以使用遠經理Find File附過濾器:在此輸入影像描述

點擊過濾器按鈕,按下Insert插入新過濾器:在此輸入影像描述

以某種方式命名過濾器,輸入檔案掩碼,選中Date/Time,選擇 value change,取消選中Relative並輸入日期/時間範圍:在此輸入影像描述

點擊確定,然後在 中Filters menu,按space選擇過濾器(+應出現在過濾器旁邊):在此輸入影像描述

按 Enter 鍵,然後點選Find在此輸入影像描述

搜尋結果(在此範例中IMG_*.jpg為照片 - 面具 - 2022 年 6 月的日期範圍):在此輸入影像描述

答案3

也可以使用 GUI 檔案總管找到該檔案。一些例子:

datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00

還有一些進一步閱讀: 在 Windows 中搜尋的進階技巧, 以程式設計方式使用進階查詢語法

相關內容