![命令“ls -ltu”无法根据上次访问时间列出文件夹/文件](https://linux22.com/image/46087/%E5%91%BD%E4%BB%A4%E2%80%9Cls%20-ltu%E2%80%9D%E6%97%A0%E6%B3%95%E6%A0%B9%E6%8D%AE%E4%B8%8A%E6%AC%A1%E8%AE%BF%E9%97%AE%E6%97%B6%E9%97%B4%E5%88%97%E5%87%BA%E6%96%87%E4%BB%B6%E5%A4%B9%2F%E6%96%87%E4%BB%B6.png)
首先在你的 Linux 桌面上创建 2 个文件夹。
a
b
现在在终端中运行它
ls -ltu
结果是
drwxr-xr-x 2 root root 4096 Aug 30 20:33 b
drwxr-xr-x 2 root root 4096 Aug 30 20:33 a
让我们单击 a 并重新运行它。
与上面的结果完全相同。
让我们单击 b 并重新运行它。
与上面的结果完全相同。
我正在尝试根据上次单击的文件夹来排列文件夹。他们推荐了ls -ltu
,但没有用。
答案1
您可以使用该命令stat
查看与文件和目录的时间相关的信息。
例子
$ mkdir a b
$ ll
total 8
drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a
drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b
$ ls -ltu
total 8
drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a
drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b
统计输出
现在让我们使用以下命令查看这些目录stat
:
$ stat a b
File: `a'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643285 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:08:03.621936538 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
File: `b'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643286 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:08:03.621936538 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
访问a
现在让我们访问目录a
:
$ ls a
现在让我们重新检查目录stat
:
$ stat a b
File: `a'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643285 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:08:33.221267791 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
File: `b'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643286 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:08:03.621936538 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
我们可以看到我们确实影响了目录的统计信息ls a
:
前
Access: 2013-08-31 00:08:03.621936538 -0400
后
Access: 2013-08-31 00:08:33.221267791 -0400
访问b
现在,如果我们访问该b
目录ls b
:
$ ls b
$ ls -ltu
total 8
drwxrwxr-x 2 saml saml 4096 Aug 31 00:17 b
drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a
统计输出
我们可以看到访问时间已经改变,上面的输出ls -ltu
应该是这样的:
$ stat a b
File: `a'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643285 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:08:33.221267791 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
File: `b'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd02h/64770d Inode: 5643286 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml)
Access: 2013-08-31 00:17:15.279776957 -0400
Modify: 2013-08-31 00:08:03.621936538 -0400
Change: 2013-08-31 00:08:03.621936538 -0400
我们可以再次看到一个简单的ls b
导致访问时间更新的情况:
前
Access: 2013-08-31 00:08:03.621936538 -0400
后
Access: 2013-08-31 00:17:15.279776957 -0400
概括
在查看上述分析时,我看不出有任何理由ls -ltu
不向您显示按预期访问时间排序的目录。
那么这是什么一回事?
也许您已安装目录以便不跟踪访问时间?这可以解释为什么没有变化。
如果您查看 mount 命令的手册页,您将看到定义的这两个选项:
atime Update inode access time for each access. See also the
strictatime mount option.
noatime Do not update inode access times on this filesystem (e.g,
for faster access on the news spool to speed up news servers).
您可以使用该命令检查文件系统的安装方式mount
。如果安装设备后noatime
会显示该选项,则表明安装该设备后不会跟踪访问时间 (atime)。这样做通常是为了提高性能。
例子
$ mount
/dev/mapper/vg_grinchy-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda5 on /boot type ext4 (rw)
/dev/mapper/vg_grinchy-lv_home on /home type ext4 (rw)
gvfs-fuse-daemon on /home/saml/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=saml)
答案2
这正是您所需要的:
ls -Aru | tail -n 1