2015-10-07 45 views
0

我試圖找到,保存和比較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

回答

0

試圖通過sort第一管道中的數據:

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

我想...找出哪些目錄有最新的變化。

爲什麼不讓ls做這項工作?

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

假設你的兩個目錄是mapmop,這個按時間排序的文件他們並輸出第一,我。即最新。拿dirname,你有你想要的。