命令“ls -ltu”无法根据上次访问时间列出文件夹/文件

命令“ls -ltu”无法根据上次访问时间列出文件夹/文件

首先在你的 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  

相关内容