寻找一个 shell 单行命令来显示文件的年龄(以天为单位)

寻找一个 shell 单行命令来显示文件的年龄(以天为单位)

我希望以一些人性化的单位来查看文件的使用年限(自上次修改以来的时间)(“昨天”、“2 天前”、“3 年前”等单位可获得加分,尽管只需几天就足够了)。

有没有简单到可以记住并根据需要输入的 shell 单行程序?有没有工具(针对 Debian/Ubuntu 打包)?我是否需要编写自定义 shell 脚本来执行一些算术运算,并将其安装在我拥有的所有服务器上?

答案1

这将显示文件的存在天数:

age () { stat=$(stat --printf="%Y %F\n" "$1"); echo "The ${stat#* } '$1' is $((($(date +%s) - ${stat%% *})/86400)) days old."; }

例子:

$ age foo
The regular file 'foo' is 41 days old.
$ age ../bar
The directory '../bar' is 296 days old.
$ age /path/to/baz
The symbolic link '/path/to/baz' is 207 days old.

可以进一步细化以显示月份、年份等的年龄。

答案2

它足够接近于产生一个良好的人类可读日期! ls 有一个选项--time-style。它允许您格式化将显示的日期。

例子

 ls -l --time-style="+%b %_d %Y"

 -rw-r--r--  1 root root 11359620 Jul 20 2010 file.ext

为了防止输入这个挂起的命令,您可以在 .bashrc 文件中为其添加别名。

相关内容