時 間 分 類 | 說 明 |
---|---|
存取 (Access) | 最近一次『存取檔案』的時間,未修改檔案內容。 |
修改 (Modify) | 最後一次『修改檔案內容』的時間,為一般查詢時所顯示的時間。 |
改變 (Change) | 最後一次『修改後設資料 (metadata)』的時間。 |
查詢上述的檔案時間有許多方法,如:由「終端機」下的 stat 命令,
或由「檔案管理員」查詢檔案屬性。
[SiB@Core-i7 ~]$ stat rocketraid-linux-3.11-patch-r2.tar.bz2 File: 'rocketraid-linux-3.11-patch-r2.tar.bz2' Size: 11534 Blocks: 32 IO Block: 4096 普通檔案 Device: 10304h/66308d Inode: 17565020 Links: 1 Access: (0640/-rw-r-----) Uid: ( 1000/ SiB) Gid: ( 1000/ SiB) Context: unconfined_u:object_r:user_home_t:s0 Access: 2015-04-21 10:45:49.421006638 +0800 Modify: 2015-04-21 10:42:52.421742032 +0800 Change: 2015-04-21 10:43:05.916533481 +0800 Birth: -
修改檔案的時間,可用 touch 這個命令,幾個常用之參數列表說明如下:
參 數 | 作 用 說 明 |
---|---|
-a | 只修改「存取時間」。 |
-d 字串 | 使用『字串』所表示的時間,而非現在時間。 |
--date=字串 | |
-h | 只改變『鏈結』本身的時間,而非『所鏈結的檔案』之時間。 |
--no-dereference | |
-m | 只修改「修改時間」。 |
-r 檔名 | 使用『檔名』所指定該檔的時間,而非現在時間。 |
--reference=檔名 | |
-t 字串 | 使用『字串』所表示的時間,而非現在時間,『字串』格式為 [[CC]YY]MMDDhhmm[.ss]。 |
--time=字串 |
試過上述幾個參數的組合後,覺得這兩個命令就夠了。
[SiB@Celeron-D ~]# touch rocketraid-linux-3.11-patch-r2.tar.bz2 -a -d "2015-04-21 10:45:49.421006638 +0800"上例中,第一列命令是修改檔案的『存取時間』,第二列命令是修改檔案的『修改時間』。而『時間字串』則取自另一個檔案的查詢結果。
[SiB@Celeron-D ~]# touch rocketraid-linux-3.11-patch-r2.tar.bz2 -m -d "
2015-04-21 10:42:52.421742032 +0800"
註:檔案的『改變時間』在 Linux 系統是不能修改的,這是基於安全性的理由。是有一些方法可以修改,不過不建議使用。
已測試版本:
- Fedora: 23, 25
參考資料:
- Unix & Linux Stack Exchange, "Changing a file's “Date Created” and “Last Modified” attributes to another file's," [Nov. 18, 2016].
- Unix & Linux Stack Exchange, "Get file created/creation time? [duplicate]," Nov 12, 2011 [Nov. 18, 2016].
- Unix & Linux Stack Exchange, "last time file opened," May 8, 2011 [Nov. 18, 2016].
- FreeBSD Man Pages, "fstat -- identify active files," [Nov. 18, 2016].
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)