如何在 Linux 上查找目录中的最新文件?
linuxoperating systemopen source更新于 2026/2/15 0:37:17
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 命令的输出不是很大,我们可以手动比较上述目录中所有文件的更新时间,并获取最近更新的文件。但如果文件数量巨大,这种方法就行不通了,因为遍历该目录中所有文件的更新时间会更加繁琐。
更好的方法是使用下面显示的命令。
命令
适用于 Mac OS −
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
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

