我知道ls -t
会按修改时间列出所有文件。但是我怎样才能将这些结果限制在最后n 个文件中呢?
6 回答
尝试使用头部或尾部。如果您想要 5 个最近修改的文件:
ls -1t | head -5
-1(这是一个)表示每行一个文件,而头部表示取前 5 个条目。
如果你想要最后 5 次尝试
ls -1t | tail -5
接受的答案仅列出文件名,但要获得前 5 个文件,也可以使用:
ls -lht | head -6
在哪里:
-l
以列表格式输出
-h
使输出可读(即文件大小以 kb、mb 等显示)
-t
通过将最近修改的文件放在最前面对输出进行排序
head -6
将显示 5 个文件,因为ls
在输出的第一行打印块大小。
我认为这是一种更优雅且可能更有用的方法。
示例输出:
total 26960312
-rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py
-rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf
-rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf
-rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf
-rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv
使用tail
命令:
ls -t | tail -n 5
默认情况下ls -t
,输出从最新到最旧排序,因此要使用的命令组合取决于您希望输出的排序方向。
对于从最新到最旧排序的最新 5 个文件,使用head
前 5 行输出:
ls -t | head -n 5
对于从最旧到最新排序的最新 5 个文件,使用-r
switch to reversels
的排序顺序,并使用tail
最后 5 行输出:
ls -tr | tail -n 5
ls -t
按创建时间而不是上次修改时间列出文件。ls -ltc
如果您想按最后修改时间从最后到第一个(从上到下)列出文件,请使用。因此要列出最后的 n:ls -ltc | head ${n}
没有其他答案对我有用。结果既是文件夹又是文件,这不是我所期望的。
对我有用的解决方案是:
find . -type f -mmin -10 -ls
这会在当前目录中列出最近 10 分钟内修改的所有文件。它不会列出最后 5 个文件,但我认为它可能会有所帮助