首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OSX -如何从命令行获取文件的创建和修改时间

OSX -如何从命令行获取文件的创建和修改时间
EN

Stack Overflow用户
提问于 2015-12-06 21:35:13
回答 2查看 62.3K关注 0票数 49

在解决一些编程难题时,我想看看我花了多长时间为这个问题编写一个解决方案。为此,我认为最好将文件创建日期与最新的修改日期进行比较。

在终端(OSX)中,我尝试了以下命令,并惊讶地看到同一日期连续三次:

代码语言:javascript
复制
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

然后我创建的方式修改了文件:

代码语言:javascript
复制
touch my_file.py
vim my_file.py   # <- modify some content
stat my_file.py

知道如何从命令行获取这两个日期吗?

澄清:我不想计时脚本的执行时间.

编辑:问题是vim在保存时更改了创建日期,对于那些感兴趣的人来说,公认的答案仍然是深入回答问题的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-06 21:50:15

stat报告标准Unix日期、最后访问时间、最后修改时间和inode更改时间(这通常被误认为是创建时间)。Mac还维护文件创建时间,可以使用GetFileInfo命令访问该文件:

代码语言:javascript
复制
$ GetFileInfo -d .bash_profile
10/08/2015 09:26:35

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

代码语言:javascript
复制
$ 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

票数 72
EN

Stack Overflow用户

发布于 2017-11-17 03:54:18

正如您已经发现的,真正的罪魁祸首是vim重置了所有4个日期时间戳。

但要回答您最初的问题,下面是Mac的stat格式,它将清楚地显示4个日期时间戳(包括创建/出生和修改):

代码语言:javascript
复制
# Access (atime)
stat -f "%Sa" file.txt
# Modify (mtime)
stat -f "%Sm" file.txt
# Change (ctime)
stat -f "%Sc" file.txt
# Birth  (Btime)
stat -f "%SB" file.txt

统合在一个命令中:

代码语言:javascript
复制
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
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34123076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档