如何在Linux系統中查詢目錄下最新的檔案?


Linux 的 find 命令是最常用的命令之一,它允許我們遍歷檔案層次結構。它主要用於查詢特定檔案或目錄,我們還可以附加其他 Linux 命令或標誌來增強或執行復雜操作。

讓我們來看一個 find 命令的例子來更好地理解它。

在下面的 Linux 程式碼中,我嘗試在我的“下載”資料夾中搜索一個檔案,為此我使用了 find 命令。

find sample.sh

輸出

sample.sh

請注意,如果 find 命令能夠找到該檔案,它將只打印檔名;如果找不到,則不會返回任何內容,終端程序將終止。

現在我們知道了 find 命令的工作原理,讓我們來看看如何使用 find 命令查詢目錄中最近更新的檔案。

假設一個名為 dir1 的目錄包含以下檔案。

immukul@192 dir1 % ls -ltr
total 5232
-rwxrwxrwx 1 immukul staff  446966 Sep 23 1998 wget-1.5.3.tar.gz
drwxrwxrwx 3 immukul staff      96 Jul  7 17:42 d1
-rwxrwxrwx 1 root    staff     106 Jul  8 13:10 sample2.sh
-rwxrwxrwx 1 root    staff     946 Jul 12 18:45 sample.sh
-rwxrwxrwx 1 root    staff     718 Jul 12 18:48 sample1.sh
drwxr-xr-x 2 immukul staff      64 Jul 13 11:36 dr1
drwxr-xr-x 3 immukul staff      96 Jul 13 11:36 dr2
-rw-r--r-- 1 immukul staff     661 Jul 14 09:00 newZip.zip
-rw-r--r-- 1 immukul staff 2201512 Jul 14 09:19 zipContent.zip
-rwxrwxrwx 1 immukul staff      24 Jul 14 15:52 sss.sh
-rw-r--r-- 1 immukul staff     122 Jul 14 16:10 somefile.txt
-rw-r--r-- 1 immukul staff       0 Jul 15 09:44 sample 1.txt
drwxrwxrwx 4 immukul staff     128 Jul 15 10:27 d2

由於 ls 命令的輸出不是很大,我們可以手動比較上述目錄中所有檔案的更新時間,找到最近更新的檔案,但是如果檔案數量巨大,這種方法就不可行了,因為逐個檢查所有檔案的時間將非常繁瑣。

更好的方法是使用以下命令。

命令

適用於 macOS

find . -type f -exec stat -lt "%Y-%m-%d" {} \+ | cut -d' ' -f6- | sort -n | tail -1

適用於其他基於 Linux 的作業系統

find . -type f -printf "%T@ %p
" | sort -n | cut -d' ' -f 2- | tail -n 1

輸出

2021-07-15 ./sample 1.txt

另一種方法是使用 ls 命令,如下所示。

命令

ls -Art | tail -n 1

輸出

sample 1.txt

更新於: 2021年7月29日

3K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.