Ava*_*eka 6 command-line time files
如果我想要某个特定目录中的文件列表,根据它们的使用情况,我该怎么办?
也就是说,我想要一个文件列表,按照它们上次使用的时间升序排列。在这种情况下,最后访问的文件应该首先列出。
您可以使用
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)
做你需要的
假设名称中没有带换行符的文件名,请执行以下操作:
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)