2015-12-06 84 views
13

在解決一些編程難題時,我想看看我花了多長時間編寫問題的解決方案。爲此,我認爲將文件創建日期與最新修改日期進行比較是個好主意。OSX - 如何從命令行獲取文件的創建和修改時間

在終端(OSX),我嘗試下面的命令和驚訝地發現在同一日期三次連續:

stat my_file.py 
16777220 10280844 -rw-r--r-- 1 username staff 0 7214 \ 
"Dec 5 08:32:39 2015" \ 
"Dec 5 08:32:39 2015" \ 
"Dec 5 08:32:39 2015" \ 
"Dec 5 08:32:39 2015" 4096 16 0 my_file.py 

然後我創建的方式修改該文件:

touch my_file.py 
vim my_file.py # <- modify some content 
stat my_file.py 

有關如何從命令行獲取這兩個日期的任何想法?

說明:我不想計算腳本的執行時間。

編輯:這個問題是用vim變化上保存,接受的答案還是回答了這個問題的深度爲那些有興趣誰創建日期。

+0

如果你想一次命令,然後爲什麼不'時間命令'? – trojanfoe

+0

這不是問題所在。我正在嘗試獲取腳本的創建日期和上次修改日期。不衡量執行時間。 –

+0

...爲了「看看我花了多長時間解決問題」。 – trojanfoe

回答

18

stat報告標準的Unix日期,上次訪問時間,上次修改時間和inode更改時間(通常會誤認爲創建時間)。 Mac OS X上也保持了文件的創建時間,並使用GetFileInfo司令部的訪問:

$ GetFileInfo -d .bash_profile 
10/08/2015 09:26:35 

下面是一個更完整的例子:

$ ls -l my_file.py 
ls: my_file.py: No such file or directory 
$ touch my_file.py 
$ stat -x my_file.py 
    File: "my_file.py" 
    Size: 0   FileType: Regular File 
    Mode: (0644/-rw-r--r--)   Uid: ( 501/  blm) Gid: ( 20/ staff) 
Device: 1,5 Inode: 26863832 Links: 1 
Access: Sun Dec 6 13:47:24 2015 
Modify: Sun Dec 6 13:47:24 2015 
Change: Sun Dec 6 13:47:24 2015 
$ GetFileInfo my_file.py 
file: "/Users/blm/my_file.py" 
type: "\0\0\0\0" 
creator: "\0\0\0\0" 
attributes: avbstclinmedz 
created: 12/06/2015 13:47:24 
modified: 12/06/2015 13:47:24 
$ echo hello >my_file.py 
$ stat -x my_file.py 
    File: "my_file.py" 
    Size: 6   FileType: Regular File 
    Mode: (0644/-rw-r--r--)   Uid: ( 501/  blm) Gid: ( 20/ staff) 
Device: 1,5 Inode: 26863832 Links: 1 
Access: Sun Dec 6 13:47:24 2015 
Modify: Sun Dec 6 13:47:35 2015 
Change: Sun Dec 6 13:47:35 2015 
$ GetFileInfo my_file.py 
file: "/Users/blm/my_file.py" 
type: "\0\0\0\0" 
creator: "\0\0\0\0" 
attributes: avbstclinmedz 
created: 12/06/2015 13:47:24 
modified: 12/06/2015 13:47:35 
$ cat my_file.py 
hello 
$ stat -x my_file.py 
    File: "my_file.py" 
    Size: 6   FileType: Regular File 
    Mode: (0644/-rw-r--r--)   Uid: ( 501/  blm) Gid: ( 20/ staff) 
Device: 1,5 Inode: 26863832 Links: 1 
Access: Sun Dec 6 13:47:54 2015 
Modify: Sun Dec 6 13:47:35 2015 
Change: Sun Dec 6 13:47:35 2015 
$ GetFileInfo my_file.py 
file: "/Users/blm/my_file.py" 
type: "\0\0\0\0" 
creator: "\0\0\0\0" 
attributes: avbstclinmedz 
created: 12/06/2015 13:47:24 
modified: 12/06/2015 13:47:35 

注意,使用vim測試,這可能是誤導,因爲vim會將修改後的文件寫入一個新的臨時文件,然後重命名舊文件和新文件,這樣創建時間將更新爲文件寫入時的時間。請參閱this post瞭解我爲此提出的解決方法。

+0

哦,這就是爲什麼......你是對的! vim是罪魁禍首......謝謝:) –

+0

@Mr_Pouet不客氣,很高興幫助! – blm

+0

@Volomike所以他們刪除它,然後把它放回去?我有Snow Leopard(10.6)和Yosemite(10.10)機器,它們都可以在這兩種機器上使用(你可能必須安裝Xcode才能使用它,我不記得是肯定的,也沒有任何系統我*不*安裝Xcode :-))。 – blm

3

正如您已經確定的,真正的罪魁禍首是vim重置所有4個日期時間戳。

但是,爲了回答你原來的問題,這裏是一個stat格式化爲Mac OSX,將清楚地顯示4分日期時間的郵票(包括創建/出生和修改):

stat -f "Access (atime): %Sa%nModify (mtime): %Sm%nChange (ctime): %Sc%nBirth (Btime): %SB" file.txt 

Access (atime): Nov 16 19:44:55 2017 
Modify (mtime): Nov 16 19:44:25 2017 
Change (ctime): Nov 16 19:44:48 2017 
Birth (Btime): Nov 16 19:44:05 2017 
相關問題