如何在Linux中使用find根據(jù)時(shí)間戳查找文件
Linux中的find命令用于根據(jù)不同的參數(shù)搜索文件和文件夾。這些參數(shù)可以是文件名,大小,文件類型等。
這樣的參數(shù)之一就是文件的時(shí)間戳。在Linux(以及所有基于Unix的文件系統(tǒng))中,每個(gè)文件都有3個(gè)時(shí)間戳記:
- 上次修改時(shí)間
- 上次訪問時(shí)間
- 上次狀態(tài)更改時(shí)間(即,當(dāng)更改文件的元數(shù)據(jù)(如權(quán)限)時(shí))
讓我們看看如何使用find來基于每個(gè)時(shí)間戳來搜索文件。
在Linux中查找文件時(shí)間戳
首先,我們可以在Linux中運(yùn)行“stat ”命令來獲取文件的所有這些時(shí)間戳。例如,對(duì)于名稱為“linuxmi.cpp”的文件,運(yùn)行:
- linuxmi@linuxmi:~/www.linuxmi.com$ stat linux
查找統(tǒng)計(jì)時(shí)間戳
根據(jù)時(shí)間戳查找文件
現(xiàn)在,要基于時(shí)間戳查找文件,我們使用手冊(cè)頁(yè)中'-newerXY'的find參數(shù)。
- linuxmi@linuxmi:~/www.linuxmi.com$ man find
Find命令手冊(cè)頁(yè)
因此,在參數(shù)中'-newerXY',我們可以將X作為a,c或m分別用于最后訪問,最后狀態(tài)更改和最后修改時(shí)間,將Y用作t,以便我們可以將下一個(gè)參數(shù)作為時(shí)間戳字符串。
注意:在基于Unix的文件系統(tǒng)中,不保留文件的創(chuàng)建時(shí)間
概括地說,要運(yùn)行的命令如下所示:
- find <directory_path> -newer<a/m/c>t ‘<timestamp>’
在這里,時(shí)間戳的格式應(yīng)為:'YYYY-MM-DD HH:MM:SS'。
讓我們?cè)谝粋€(gè)只有幾個(gè)文件的文件夾中嘗試這個(gè)方法,在指定的時(shí)間之后只有兩個(gè)文件被訪問、修改和狀態(tài)更改。
- linuxmi@linuxmi:~/www.linuxmi.com$ find . -newerat '2021-05-16 07:55'
- linuxmi@linuxmi:~/www.linuxmi.com$ find . -newerct '2021-05-16 07:55'
- linuxmi@linuxmi:~/www.linuxmi.com$ find . -newermt '2021-05-16 07:55'
根據(jù)時(shí)間戳查找文件
如果兩個(gè)文件的時(shí)間戳確實(shí)大于指定的時(shí)間,請(qǐng)使用“ stat”進(jìn)行驗(yàn)證。
- linuxmi@linuxmi:~/www.linuxmi.com$ stat linuxmi.cpp linuxmi.com.cpp
驗(yàn)證文件時(shí)間戳
總結(jié)
我們已經(jīng)學(xué)習(xí)了如何使用命令find的參數(shù)'-newerXY'來根據(jù)時(shí)間戳搜索文件。
請(qǐng)注意,您也可以將另一個(gè)文件用作參考時(shí)間戳,而不用顯式指定時(shí)間戳,在這種情況下,可以跳過參數(shù)中的“ t”。
如果還有什么疑問,請(qǐng)?jiān)谙旅娴牧粞詸诶镏赋觯x謝!