对于目录列表我总是使用类似命令
ls -la --time-style=long-iso <directoryname>
一切都已尽善尽美。
但在某些情况下,我会在文件名后附加日期时间后缀。当我备份 bash 历史文件时尤其如此。一行 ls 输出可能如下所示:
-rw-r--r-- 1 root root 1234567 2023-10-23 20:39 /root/.bash_history.WE_2023-10-23_23-13-10_CEST
例如,当我在开发 bash 脚本时,时间戳显示 20:39 的状态在 $HISTFILE 中,而备份是使用我在 23:13:10 对脚本的测试运行编写的。
还行吧。
但经过三次测试运行后, ls 的输出如下:
-rw-r--r-- 1 root root 1234567 2023-10-23 20:39 /root/.bash_history.WE_2023-10-23_23-13-10_CEST
-rw-r--r-- 1 root root 1234567 2023-10-23 20:39 /root/.bash_history.WE_2023-10-23_23-23-10_CEST
-rw-r--r-- 1 root root 1234567 2023-10-23 20:39 /root/.bash_history.WE_2023-10-23_23-33-10_CEST
我几十年来一直存在的问题是 ls 对日期时间进行排序的顺序。
我希望将最新的日期时间放在列表的第一位。
ls 带有选项 -t 可以按时间戳排序。
但是如果有许多文件具有相同的时间戳,则 ls 会按照错误的顺序列出该集群:最旧的文件名和日期在最前面。
如果 ls 除了原始排序键时间戳外还观察文件创建日期和时间,则 ls 可以正确排序。但是 ls 却不能。
今天我再次尝试寻找解决方案,但没有成功。
至少,选项 -v 不会导致成功。
并且通过实用程序排序提供 ls 的输出,也不能给出正确的结果。
是的,如果我只考虑相同时间戳的集群,那么我可以反转顺序。但副作用是其他事情会变得混乱。例如,没有文件名附加的文件“/root/.bash_history”被 ls 写为顶行,即第一行。我尝试了这些措施,这个文件名位于列表中间的某个位置。
我在互联网上搜索过,发现了很多关于按日期排序的文章,但没有一篇解决我的问题。
有没有其他人遇到过这个问题,请问有已知的解决方案吗?
问候。