在bash中排序和比较日期

时间:2015-10-07 12:20:50

标签: bash shell datetime

我试图找到,保存和比较"最后一次更改" 2个不同目录中文件的日期时间,并确定哪个目录有最新更改。

我走到这一步:

find ./map -type f -print0 | xargs -0 stat -f "%Sm"

这将打印所有"最后更改日期"目录中的文件。

输出看起来像这样:

Oct  5 12:07:59 2015
Aug 27 12:40:29 2015
Aug 27 12:40:42 2015
Aug 27 12:40:42 2015
Aug 27 12:40:40 2015
Aug 27 12:40:37 2015
Aug 27 12:40:35 2015
Aug 27 12:40:33 2015

我需要对它们进行排序,取最后一个,再对另一个目录做同样的事情,然后比较输出以找出哪一个是最新的。

我不知道如何对这些输出进行排序,因为它们必须按年份排序,然后按月,日......排序 而且我也不知道如何将这些值转换为我可以在bash脚本中进行比较的内容......

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先尝试通过sort管道传输数据:

find /map -type f -print0 | sort | xargs -0 stat -f "%Sm"

答案 1 :(得分:0)

  

我正在努力......弄清楚哪个目录有最新的变化。

为什么不让ls完成这项工作?

/bin/ls -t `find map mop -type f` | head -1

假设您的两个目录是mapmop,这会按时间对其中的文件进行排序并输出第一个,即i。即最新。拿dirname,你就拥有了你想要的东西。