2015-12-06 12 views
13

Trong khi giải quyết một số câu đố lập trình, tôi muốn xem tôi mất bao lâu để viết giải pháp cho vấn đề. Để làm như vậy, tôi nghĩ sẽ tốt hơn nếu so sánh ngày tạo tệp với ngày sửa đổi mới nhất.OSX - Cách lấy thời gian tạo và sửa đổi tệp từ dòng lệnh

Trong terminal (OSX), tôi đã thử lệnh sau đây và rất ngạc nhiên khi nhìn thấy cùng ngày ba lần liên tiếp:

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 

Con đường tôi tạo ra sau đó sửa đổi các tập tin:

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

Bất kỳ ý tưởng nào về cách lấy hai ngày này từ dòng lệnh?

Làm rõ: Tôi không muốn thời gian thực thi của tập lệnh.

: VÍ DỤ: Vấn đề là thay đổi ngày tạo thành khi lưu, câu trả lời được chấp nhận vẫn trả lời câu hỏi chuyên sâu cho những người quan tâm.

+0

Nếu bạn muốn thời gian một lệnh sau đó tại sao không 'lệnh thời gian'? – trojanfoe

+0

Đó không phải là câu hỏi. Tôi đang cố gắng để có được sự sáng tạo và ngày sửa đổi cuối cùng của kịch bản. Không đo thời gian thực hiện. –

+0

... để "xem tôi mất bao lâu để giải quyết vấn đề". – trojanfoe

Trả lời

18

stat báo cáo ngày chuẩn của Unix, thời gian truy cập cuối cùng, thời gian sửa đổi lần cuối và thời gian thay đổi inode (thường bị nhầm lẫn với thời gian tạo). Mac OS X cũng duy trì thời gian sáng tạo tập tin, và nó có thể truy cập bằng cách sử dụng GetFileInfo lệnh:

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

Dưới đây là một ví dụ hoàn chỉnh hơn:

$ 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 

Lưu ý rằng việc sử dụng vim để kiểm tra điều này có thể gây hiểu nhầm vì vim sẽ ghi tệp đã sửa đổi của bạn vào một tệp tạm thời mới, sau đó đổi tên tệp cũ và tệp mới, do đó thời gian tạo sẽ được cập nhật khi tệp được ghi. Xem this post để được giải quyết sự cố Tôi đã nghĩ ra điều đó.

+0

Ồ, đó là lý do tại sao ... bạn nói đúng! vim là thủ phạm ... Cảm ơn :) –

+0

@Mr_Pouet Bạn được chào đón, vui mừng được giúp đỡ! – blm

+0

@Volomike Vì vậy, họ đã xóa nó rồi đặt lại? Tôi có các máy Snow Leopard (10.6) và Yosemite (10.10) và nó có sẵn trên cả hai máy đó (bạn có thể phải cài đặt Xcode để có sẵn, tôi không thể nhớ chắc chắn và không có bất kỳ hệ thống nào) nơi tôi * không * đã cài đặt Xcode :-)). – blm

3

Như bạn đã xác định, thủ phạm thực sự là vim đặt lại tất cả 4 tem ngày giờ.

Tuy nhiên, để trả lời câu hỏi ban đầu của bạn, đây là một stat định dạng cho Mac OSX sẽ hiển thị rõ ràng 4 tem datetime (bao gồm Creation/Sinh và Sửa đổi):

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 
Các vấn đề liên quan