2015-12-22 20 views
4

我有一個相當大的目錄結構與數以千計的文件。我想知道在特定時間之後是否有任何變化。現在,我可以使用如果有任何文件最近發生變化,儘可能快

find <dir> -mmin 30 -type f 

..找到過去30分鐘內發生變化的任何文件。但是,這需要幾秒鐘的時間才能完成,而我對(1)找到所有更改的文件甚至(2)查找哪些文件已更改都不感興趣。我只是在尋找對「任何文件改變?」的肯定/否定答案。

我可以通過使用-print -quit在找到第一個文件後停止來使(1)更好。但是,對於沒有文件更改的情況,總搜索仍需要一些時間。

我想知道是否有更快捷的方法來檢查?目錄時間戳,也許?如果有問題,我使用ext4。

+0

對目錄本身使用'stat'怎麼樣?當我創建一個新文件時,我的本地測試使我得到更新。這是足夠的還是你還需要檢查一個文件是否更新? – fedorqui

+0

@fedorqui我也需要檢查一個文件是否被更新。 – Stan

+0

好吧,那麼我的方法不會幫助。順便說一下,我認爲你的意思是'mmin -30',即'-30'而不是'30'。 – fedorqui

回答

1

對於GNU的find,您可以使用選項-quit在第一場比賽後停止搜索。

所以,如果你想了解,如果有至少一個文件在過去30分鐘改變了,那麼你就可以運行:

find . -mmin -30 -type f -print -quit 

,將打印出來的第一個匹配的文件名並退出。另外,如果您可以控制使用您的一堆文件的軟件,並且性能不是問題,那麼您可以在每次更改或添加任何文件時添加一個觸摸時間戳文件的功能,然後僅檢查該時間戳檔案的統計資料。

相關問題