2011-08-17 38 views
2

我有兩個文件。我需要計算兩個文件之間的時間戳差異。unix shell中兩個文件的時間戳差異

我需要test1和test2之間的時間戳差異: -rw-r - r-- 1 root root 1 Aug 16 16:26 test1 -rw-r - r-- 1 root root 2 Dec 13 2010 test2

我需要test3和test4之間的時間戳差異。

-rw-r--r-- 1 root  root   3 Aug 16 16:26 test3 
-rw-r--r-- 1 root  root   4 Aug 16 17:34 test4 

請讓我知道我們如何在Solaris中實現它。 我使用Solaris和我的機器的信息是:

- Sol 5.10 Generic_127128-11 i86pc i386 i86pc. 

如果你需要別人知道什麼,請讓我知道。

我在Solaris中將下面的答案日期轉換爲秒。

truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}' 

但是這是針對當前日期..我們如何做到這一點的文件(例如test3,如上)?

+1

在什麼精度水平,你想要時間戳差異,即在幾天,幾小時或幾分鐘? – Pradeep

回答

0

嘗試這樣的事情在數秒內獲得日期

date +%s -d "`ls -l test1 | awk -F " " '{ print $6,$7 }'`" 
+0

它不工作:(。)拋出錯誤: - bash:命令替換:第1行:意外的EOF,同時尋找匹配的'「' bash:命令替換:第2行:語法錯誤:文件意外結束 bash:命令替換:第1行:意外的EOF,同時尋找匹配的'「' bash:命令替換:第2行:語法錯誤:文件意外結束 awk:無法打開{print $ 6,$ 7} – user358232

+0

此命令不能在solaris .....你有沒有其他的命令可以在solaris上工作 – user358232

3

靜(1)命令可以顯示秒紀元以來的時間戳:

stat --printf '%Y\n' foo 

因此有點像以下可能工作:

(stat --printf '%Y' test2; printf ' - '; stat --printf '%Y\n' test4) | bc -lq 

根據需要調整。

+0

它給出的錯誤stat命令在bash中找不到 – user358232

+0

stat是coreutils的一部分,它通常安裝在每個Linux系統上,除了嵌入式系統之外,所以我是如果你沒有它,會感到驚訝,或者你正在使用另一個Unix系統?你需要提供更多的con文字和信息更多的幫助,我猜。 (比如:你使用的是什麼系統,以及確切的錯誤是什麼,編輯你的問題,請這樣做。) – 2011-08-17 07:32:22

+0

嘿,首先thx ....我使用solaris和我的機器信息是: - 溶膠5.10 Generic_127128-11 i86pc i386 i86pc。如果你需要任何東西,請讓我現在 – user358232

0
$ ls -l .bashrc* 
-rw-r--r-- 1 max max 360 Dec 14 2010 .bashrc 
-rw-r--r-- 1 max max 359 Dec 2 2010 .bashrc~ 

$ echo $((`stat --format=%Y .bashrc` - `stat --format=%Y .bashrc~`)) 
1018884 

$(())語法是bash算術表達式的擴展。上面發生的情況是,自從刪除Unix紀元並打印差異以來,文件時間戳記在幾秒鐘之內。

+0

在linux ur命令正在工作.....但在solaris上它說stat命令未找到。你能否告訴我stat是一個solaris命令還是不是? – user358232

+1

你想在Solaris上做的第一件事是安裝GNU工具。 HTTP:// sunfreeware。COM/indexintel10.html –