如果我想要根据用途获取某个特定目录中的文件列表,我该怎么做?
也就是说,我想要一个按文件上次使用时间升序排列的文件列表。在这种情况下,最后访问的文件应该列在最前面。
答案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' *
打印当前目录中的文件,以relatime
Epoch 中的访问时间(精确)作为第一列,以文件名作为下一列sort -k1,1rn
按第一个字段(时间)排序cut -d' ' -f2-
仅获取文件名
如果您还想获取文件名和访问时间:
stat -c '%X %x %n' * | sort -k1,1rn | cut -d' ' -f2-