2015-12-06 85 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 
相关问题