X

Linux 使用 stat 查詢檔案詳細的建立、修改時間

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天前修改的

有些時候我們要的不是確切日期而是“放多久”了,而是要查看幾天前可用此方法。

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post