在解决一些编程难题时,我想看看我花了多长时间来编写问题的解决方案.为此,我认为将文件创建日期与最新修改日期进行比较是个好主意.
在终端(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在保存时更改了创建日期,接受的答案仍然为那些感兴趣的人深入回答了问题.
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
将修改后的文件写入新的临时文件,然后重命名旧文件和新文件,因此创建时间将更新为写入文件的时间.请参阅此文章,了解我为此提出的解决方法.
正如您已经确定的那样,真正的罪魁祸首是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