如何在 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 命令則提供了詳細的檢視。

更新於:2023年8月1日

12K+ 瀏覽量

開始你的 職業生涯

透過完成課程獲得認證

開始
廣告