我有安裝了 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-ChildItem
cmdlet 傳回給定資料夾中的所有檔案(如果需要,遞歸地),並且Where-Object
cmdlet 可讓您過濾其他指令的輸出。範例腳本(假設您要搜尋的目錄是目前目錄):
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
附過濾器:
以某種方式命名過濾器,輸入檔案掩碼,選中Date/Time
,選擇 value change
,取消選中Relative
並輸入日期/時間範圍:
答案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 中搜尋的進階技巧, 以程式設計方式使用進階查詢語法