在bash中排序和比较日期

问题描述:

我试图找到,保存和比较2个不同目录中文件的“最后更改”日期时间,并找出哪个目录有最新更改。在bash中排序和比较日期

我来到这么远:

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脚本...

任何想法?

+1

'find ./map -type f -printf“%A +%p \\ n”'会以更容易排序的格式为您提供日期。 –

+0

未知的主要或运营商? – Luka

+0

不要在'-exec'足够的地方使用'xargs':'find ./map -type f -exec stat -f“%Sm”{} \;'。 – chepner

试图通过sort第一管道中的数据:

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

我想...找出哪些目录有最新的变化。

为什么不让ls做这项工作?

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

假设你的两个目录是mapmop,这个按时间排序的文件他们并输出第一,我。即最新。拿dirname,你有你想要的。