如何grep某個時間範圍內的一組文件?

如何grep某個時間範圍內的一組文件?

我正在嘗試編寫一個在緩衝區盒上使用的腳本,該腳本可以對網路流量進行完整的資料包捕獲。由於這是一個相當大的網絡,我們將捕獲分成 100MB 的片段。當網路流量較高時,通常會超過一分鐘,我們將有多個 pcap 覆蓋該時間段。

所以我想要做的是有一個 bash 腳本,讓正在搜尋某些內容的分析師指定日期和時間,以及他們想要搜尋檔案的兩邊的分鐘數。顯然我可以做這樣的事情 -

ls -al | grep "Dec  1" | grep 02:00
ls -al | grep "Dec  1" | grep 02:01

依此類推,獲取每個結果並分別 grep 每個文件以查找我正在尋找的特定關鍵字,但我希望能夠對某個時間範圍內創建的所有文件進行更廣泛的搜索,然後 grep 每個文件關鍵字。

我不完全確定如何做到這一點,任何幫助將不勝感激。

答案1

find一些(在 GNU/Linux 上)可以為您做的好事情:

單位:

  • n確切地n尤蒂斯
  • -n少於n單位
  • +n多於n單位 -

發生了什麼事:

  • -atime: 上次訪問過
  • -ctime: 更改於文件本身(權限、所有者…),而不是其內容
  • -mtime:文件的內容改變了
  • -amin n:n分鐘年齡
  • -atime n:n天(24 小時)前
  • ctime/min和也一樣mtime/min

因此:

  • find -atime -30→ 上次造訪時間不到 30 天前
  • find -ctime +5→ 超過 5 天前,文件本身發生更改
  • find -mtime +2 -31→ 文件內容更改時間超過兩天但少於 31 天

另外 - -daystart:今天之後 0.00 小時


格雷平

find 東西 -exec grep {} \;→;最後一部分 ( ) 至關重要 - 請注意和{} \;之間的單一空格{}\;

這些-exec選項允許將其他命令合併到find


也:為什麼不應該解析輸出ls

答案2

find -iname "" -mtime -7 -exec zgrep "" {} \;

對於前

尋找 /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;

它將在目錄 /opt/WebSphere/AppServer/profiles/application/logs/ 中尋找過去 7 天內以 SystemOut 開頭的文件,並尋找 String FileNotFoundException。

相關內容