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

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

在〈Linux 使用 stat 查詢檔案詳細的建立、修改時間〉中有 2 則留言

  1. # 請您看一下 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

    # 有些時候我們要的不是確切日期而是“放多久”了。 您看看那個比較適合你的需要。

    1. 嗯嗯,我這篇主要是要檔案的修改時間,來修改照片的日期。

      您的作法是另一種需求,留言似乎將您程式碼的 <> 和裡面的內容拿掉了,我將您的留言內容補充進內容,也將 foreach() 裡面弄個簡單範例補充一下。

      謝謝

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料