按用途列出的文件列表

按用途列出的文件列表

如果我想要根据用途获取某个特定目录中的文件列表,我该怎么做?

也就是说,我想要一个按文件上次使用时间升序排列的文件列表。在这种情况下,最后访问的文件应该列在最前面。

答案1

您可以使用

ls -l --time=atime --sort=t

解释:

  • ls -l以详细列表格式列出文件
  • --time=atime --sort=t将排序顺序设置为上次访问的时间

例子:

$ touch foo bar foobar
$ ls -l
insgesamt 0
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 bar
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foo
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foobar
$ sleep 60; touch baz
$ ls -l 
insgesamt 0
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 bar
-rw-r--r-- 1 Wayne users 0 Okt  4 11:58 baz
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foo
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foobar

几分钟后:

$ touch -a foo # sets atime to cuurent time
$ ls -lt
insgesamt 0
-rw-r--r-- 1 Wayne users 0 Okt  4 11:58 baz
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foobar
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 bar
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foo
$ ls -lt --time=atime
insgesamt 0
-rw-r--r-- 1 Wayne users 0 Okt  4 12:01 foo
-rw-r--r-- 1 Wayne users 0 Okt  4 11:58 baz
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 foobar
-rw-r--r-- 1 Wayne users 0 Okt  4 11:56 bar

结论:

ls -lt --time=atime

满足您的需要

答案2

假设文件名中没有换行符,则执行以下操作:

stat -c '%X %n' * | sort -k1,1rn | cut -d' ' -f2-
  • stat -c '%X %n' *打印当前目录中的文件,以relatimeEpoch 中的访问时间(精确)作为第一列,以文件名作为下一列

  • sort -k1,1rn按第一个字段(时间)排序

  • cut -d' ' -f2-仅获取文件名


如果您还想获取文件名和访问时间:

stat -c '%X %x %n' * | sort -k1,1rn | cut -d' ' -f2-

相关内容