Linux CLI 要看檔案的建立日期,直接 ls -l 就可以看到建立日期,但是要看到詳細的檔案建立、修改、更動的時間,要怎麼做呢?
Linux 使用 stat 查詢檔案詳細的建立、修改時間
Linux 可以使用 stat 的命令來看檔案、目錄等等的詳細資訊。
stat 執行範例
- $ stat foo.jpg # 檔案
File: 'foo.jpg' Size: 2642090 Blocks: 5168 IO Block: 4096 普通檔案 Device: 802h/2050d Inode: 2149 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user) Access: 2017-01-04 09:11:59.147044090 +0800 Modify: 2012-09-01 12:17:38.000000000 +0800 Change: 2017-01-04 09:01:19.332518704 +0800
- $ stat directory/ # 目錄
File: 'directory/' Size: 4096 Blocks: 8 IO Block: 4096 目錄 Device: 802h/2050d Inode: 9977868 Links: 3 Access: (0775/drwxrwxr-x) Uid: ( 1000/ user) Gid: ( 1000/ user) Access: 2017-01-04 08:46:13.483244520 +0800 Modify: 2014-09-05 17:51:57.478291330 +0800 Change: 2014-09-05 17:51:57.478291330 +0800 Birth: -
Shell 抓取檔案的修改時間 (Modify),並轉換成 Dropbox 檔案格式 (- 和 : 都換成 .),可使用下述:
- $ stat foo.jpg | grep Modify | awk -F. '{print $1}' | awk '{print $2,$3}' | sed 's/[-:]/./g'
2017/2/13 補充:
感謝 cktsai 補充,想要查看檔案是「幾天之前」的 Perl 寫法:
文件:perlfunc - perldoc.perl.org
- -M Script start time minus file modification time, in days. (一個file的modified time (幾天之前))
- -A Same for access time.
操作上可以這樣弄:
- perl -Mfeature=say -e 'foreach (<*>) {say "$_ ". -M $_ ;}'
- 針對檔案 *.jpg
- perl -Mfeature=say -e 'foreach (<*.jpg>) {say "$_ ". -M $_ ;}'
出來的就是每個 directory/file,是幾天前修改過;
- Documents 0.620949074 # 這個 Documents 是0.62天前修改的
有些時候我們要的不是確切日期而是“放多久”了,而是要查看幾天前可用此方法。
# 請您看一下 http://perldoc.perl.org/perlfunc.html
# -M 是給你一個file的modified time (幾天之前)
-M Script start time minus file modification time, in days.
-A Same for access time.
# 操作上可以這樣弄:
perl -Mfeature=say -e 'foreach () {say "$_ ". -M $_ ;}'
# 出來的就是每個directory/file,是幾天前修改過;這個Documents是0.62天前修改的。
#
Documents 0.620949074
# 有些時候我們要的不是確切日期而是“放多久”了。 您看看那個比較適合你的需要。
嗯嗯,我這篇主要是要檔案的修改時間,來修改照片的日期。
您的作法是另一種需求,留言似乎將您程式碼的 <> 和裡面的內容拿掉了,我將您的留言內容補充進內容,也將 foreach() 裡面弄個簡單範例補充一下。
謝謝