這應該很簡單,但我沒有搞清楚。我在Linux下有一個超過4GB的大代碼庫。構建期間會生成一些頭文件和xml文件(使用gnu make)。如果重要的話,頭文件是基於xml文件生成的。基於時間戳的grep文件
我想在一個時間實例(它是我的開始編譯時間)之後最後修改的頭文件中搜索關鍵字,以及類似的xml文件,但單獨的grep查詢。
如果我在所有可能的頭文件或xml文件上運行它,它會花費很多時間。只有那些是自動生成的。此外,搜索必須是遞歸的,因爲有很多目錄和子目錄。
這應該很簡單,但我沒有搞清楚。我在Linux下有一個超過4GB的大代碼庫。構建期間會生成一些頭文件和xml文件(使用gnu make)。如果重要的話,頭文件是基於xml文件生成的。基於時間戳的grep文件
我想在一個時間實例(它是我的開始編譯時間)之後最後修改的頭文件中搜索關鍵字,以及類似的xml文件,但單獨的grep查詢。
如果我在所有可能的頭文件或xml文件上運行它,它會花費很多時間。只有那些是自動生成的。此外,搜索必須是遞歸的,因爲有很多目錄和子目錄。
要在所有文件中找到'pattern'
更新比some_file
在當前目錄及其子目錄遞歸:
find -newer some_file -type f -exec grep 'pattern' {} +
你可以在date -d
格式直接指定時間戳記,並使用其他find
測試如,-name
,-mmin
。
如果find
太慢,文件列表也可能由您的構建系統生成。
謝謝,我遇到了比回答更有價值的東西。我從未遇到過GCCSense。我正在尋找vim中的eclipse代碼補全功能。猜猜它最近開發的。 – Kamath 2012-01-16 05:09:15
爲什麼地球上有一個「新手」標誌,但不是「 - ol」標誌? – Guillochon 2016-05-14 16:12:35
@Guillochon:['! -newer'](http://stackoverflow.com/q/13838845/4279) – jfs 2016-05-14 16:17:06
您可以使用find
命令:
find . -mtime 0 -type f
並在過去的24小時(-mtime 0
進行了修改,當前目錄(.
)所示打印所有文件(-type f
)的列表,1人48小時,2將是72小時,...)。嘗試
grep "pattern" $(find . -mtime 0 -type f)
真棒解答,在CentOS 5.6上運行良好。 – crmpicco 2013-12-09 10:06:30
使用此。因爲如果find
沒有返回文件,則grep
將繼續等待輸入暫停腳本。
find . -mtime 0 -type f | xargs grep "pattern"
您可能想要包含當前命令的示例。節省我們指出你已經知道的明顯東西的麻煩。 – sehe 2012-01-13 15:12:02