如何在 Linux 中列出最近修改的五個檔案?
在 Linux 中,出於各種原因,例如故障排除或審計目的,通常需要找出最近修改的檔案。列出最近修改的五個檔案是常見的需求,可以使用各種 Linux 命令來實現。在本文中,我們將探討一些在 Linux 中列出最近修改的五個檔案的方法。
注意 - Linux 命令區分大小寫。
使用 ls 命令
ls 命令是 Linux 中最常用的命令之一,用於列出檔案和目錄。我們可以使用 ls 命令來列出按修改時間排序的目錄中的檔案,使用 -t 選項。然後,我們可以使用“head”命令顯示列表中的前五個檔案。以下命令列出當前目錄中最近修改的五個檔案:
$ ls -lt | head -n 6
輸出
total 31654651 -drwx-r--r-- 7 user root 1.2K 11 Dec 11:22 linuxfile.py -rw-r--r-- 5 user root 2.7M 10 Dec 15:26 script-linux.pdf -rw-r--r-- 1 user root 9.2M 9 Dec 16:21 win_scp.pdf -rw-r--r-- 4 user root 502K 8 Dec 10:20 class1.pdf -rw-rw-rw- 1 user root 2.0M 5 Dec 22:06 script23.jpg
-l 選項以長列表格式顯示檔案,包括檔案許可權、所有權、大小和修改時間。-t 選項按修改時間降序排列檔案,最近修改的檔案位於頂部。head 命令顯示前六行,包括列標題和最近修改的五個檔案。
現在我們將瞭解如何使用“sort”命令列出所有最近修改的五個檔案。如下所示,我們需要提供目錄的路徑,並使用 sort 關鍵字與 tail 一起獲取最近修改的五個檔案:
$ find /home/cg/root/ -type f -printf '%T@\t%p
' | sort -n | tail -5
輸出
1684171184.3445822090 /home/cg/root/6462638544588/main.py 1684171184.7965797450 /home/cg/root/6462695907cd6/main.py 1684171186.4405707830 /home/cg/root/646264dd4a983/main.lua 1684171186.9005682750 /home/cg/root/64625da89eee4/main.lua 1684171188.9325571980 /home/cg/root/6462694c393df/main.pl
使用 find 命令
find 命令是 Linux 中另一個有用的命令,用於根據各種條件(例如名稱、大小和修改時間)搜尋檔案和目錄。我們可以使用 find 命令搜尋目錄及其子目錄中所有在過去 24 小時內修改的檔案,使用 -m 時間選項。然後,我們可以使用 head 命令顯示列表中的前五個檔案。以下命令列出當前目錄及其子目錄中最近修改的五個檔案:
$ find . -type f -mtime -1 -print0 | xargs -0 ls -lt | head -n 6
輸出
2494345 4 drwxr-xr-x 3 root root 496 Dec 20 12:55 /root/home/shell.py 2490782 4 -rw-r--r-- 1 root root 418 Dec 8 03:54 /root/home/sh/remote.sh 2435566 4 drwxr-xr-x 3 root root 4096 Dec 20 12:54 /root/home/shell3.sh 2494508 4 -rw-r--r-- 1 root root 436 Dec 20 12:54 /root/home/script/test3/sh 2344324 4 drwxr-xr-x 6 root root 4096 Dec 20 12:53 /root/home/test.py
find 命令搜尋當前目錄 (.) 及其子目錄中的所有檔案 (-type f),這些檔案在過去 24 小時內 (-m time -1) 被修改,並使用空字元終止其名稱 (-print 0)。x args 命令從 find 讀取以空字元分隔的檔名列表,並將它們作為引數傳遞給 ls 命令,該命令按修改時間對檔案進行排序,並以長列表格式 (-lt) 顯示它們。head 命令顯示前六行,包括列標題和最近修改的五個檔案。
現在我們將瞭解如何使用“stat”命令列出所有最近修改的五個檔案。如下所示,我們需要提供目錄的路徑,並使用 sort 關鍵字與 head 一起獲取最近修改的五個檔案:
$ find /home/cg/root -type f -exec stat --format '%Y %n' {} + | sort -nr | head -5
輸出
1684172257 /home/cg/root/646267076a666/demo.m 1684172255 /home/cg/root/64626d0533a41/testing.txt 1684172255 /home/cg/root/646267bba8bdf/main.pl 1684172254 /home/cg/root/646267eb29beb/demo.m 1684172250 /home/cg/root/64626d8526584/main.lua
結論
在本文中,我們探討了兩種在 Linux 中列出最近修改的五個檔案的方法。ls 命令是在目錄中列出最近修改的檔案的一種簡單有效的方法。find 命令是根據各種條件(包括修改時間)搜尋檔案的一種更強大、更靈活的方法,而 stat 命令則提供了詳細的檢視。