2013-04-18 84 views
167

例如Mysql服務器正在我的Ubuntu機器上運行。有些數據在過去24小時內發生了變化。腳本:查找過去24小時內的文件已更改

什麼(Linux)腳本可以找到過去24小時內發生更改的文件?

請列出文件名稱,文件大小和修改時間。

+1

你可以使用http://stackoverflow.com/questions/4561895/how-to-recursively-find-the-latest-modified-file-in-a-directory – vaugham

回答

321

要找到一個特定的具體目錄在過去24小時內修改的所有文件(最後一天)及其子目錄:

find /directory_path -mtime -1 -ls 

應該是根據自己的喜好

-1很重要 - 這意味着一天或更少時間以前發生了任何變化。 A +之前1將意味着至少在一天前發生了任何變化,而在1之前沒有任何變化意味着它在一天前改變了,沒有更多,沒有更多。

+8

不錯!最近2小時怎麼樣? – JackWM

+73

使用「-mmin -120」而不是mtime – Xavjer

+0

感謝您的回答,但我想獲取返回值,如果此命令得到一些修改後的文件,如果不是? – Spartan

29

你可以做到這一點與

find . -mtime 0 

man find

[的]時間,因爲每個文件的最後修改有24小時的劃分和任何其餘被丟棄。這意味着對於 match -mtime 0,文件將不得不在過去不到24小時前進行修改。

5

此命令爲我工作

find . -mtime -1 -print 
6

在GNU兼容的系統(如Linux)的:

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more 

這將列出文件,並已在過去24小時內被修改目錄(-mtime 0)。它將以最後一次修改時間以可排序和可讀的格式(%T+),後跟文件大小(%s),後跟全文件名(%p),每個由製表符(\t)分隔)列出它們。

2>/dev/null拋棄任何stderr輸出,以便錯誤信息不會混淆水域; sort -r對最近修改的結果進行排序;和| more一次列出一頁結果。

+0

你也可以使用'|更少'而不是'|更多',我想。 –

1

對於其他人誰在未來的(包括我自己)在這裏登陸,添加-name選項來找到特定的文件類型,例如:find /var -name "*.php" -mtime -1 -ls

+1

您需要用雙引號保護*,否則它將在命令行上展開: 'find/var -name「* .php」-mtime -1 -ls' – jytou

3

另一種方式:

find /<directory> -newermt "-24 hours" -ls 

或:

find /<directory> -newermt "1 day ago" -ls 

或:

find /<directory> -newermt "yesterday" -ls 
相關問題