根据使用情况列出文件

Ava*_*eka 6 command-line time files

如果我想要某个特定目录中的文件列表,根据它们的使用情况,我该怎么办?

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

Way*_*Yux 9

您可以使用

ls -l --time=atime --sort=t
Run Code Online (Sandbox Code Playgroud)

解释:

  • 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
Run Code Online (Sandbox Code Playgroud)

几分钟后:

$ 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
Run Code Online (Sandbox Code Playgroud)

结论:

ls -lt --time=atime
Run Code Online (Sandbox Code Playgroud)

做你需要的


hee*_*ayl 5

假设名称中没有带换行符的文件名,请执行以下操作:

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

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

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


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

stat -c '%X %x %n' * | sort -k1,1rn | cut -d' ' -f2-
Run Code Online (Sandbox Code Playgroud)