如何在Linux中使用find根據時間戳查找文件
Linux中的find命令用于根據不同的參數搜索文件和文件夾。這些參數可以是文件名,大小,文件類型等。
這樣的參數之一就是文件的時間戳。在Linux(以及所有基于Unix的文件系統)中,每個文件都有3個時間戳記:
- 上次修改時間
- 上次訪問時間
- 上次狀態更改時間(即,當更改文件的元數據(如權限)時)
讓我們看看如何使用find來基于每個時間戳來搜索文件。
在Linux中查找文件時間戳
首先,我們可以在Linux中運行“stat ”命令來獲取文件的所有這些時間戳。例如,對于名稱為“linuxmi.cpp”的文件,運行:
- linuxmi@linuxmi:~/www.linuxmi.com$ stat linux
查找統計時間戳
根據時間戳查找文件
現在,要基于時間戳查找文件,我們使用手冊頁中'-newerXY'的find參數。
- linuxmi@linuxmi:~/www.linuxmi.com$ man find
Find命令手冊頁
因此,在參數中'-newerXY',我們可以將X作為a,c或m分別用于最后訪問,最后狀態更改和最后修改時間,將Y用作t,以便我們可以將下一個參數作為時間戳字符串。
注意:在基于Unix的文件系統中,不保留文件的創建時間
概括地說,要運行的命令如下所示:
- find <directory_path> -newer<a/m/c>t ‘<timestamp>’
在這里,時間戳的格式應為:'YYYY-MM-DD HH:MM:SS'。
讓我們在一個只有幾個文件的文件夾中嘗試這個方法,在指定的時間之后只有兩個文件被訪問、修改和狀態更改。
- 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'
根據時間戳查找文件
如果兩個文件的時間戳確實大于指定的時間,請使用“ stat”進行驗證。
- linuxmi@linuxmi:~/www.linuxmi.com$ stat linuxmi.cpp linuxmi.com.cpp
驗證文件時間戳
總結
我們已經學習了如何使用命令find的參數'-newerXY'來根據時間戳搜索文件。
請注意,您也可以將另一個文件用作參考時間戳,而不用顯式指定時間戳,在這種情況下,可以跳過參數中的“ t”。
如果還有什么疑問,請在下面的留言欄里指出,謝謝!