1. 程式人生 > 其它 >3.12 Linux建立檔案及修改檔案時間戳(touch命令)

3.12 Linux建立檔案及修改檔案時間戳(touch命令)

既然知道了如何在 Linux 系統中建立目錄,接下來你可能會想在這些目錄中建立一些檔案,可以使用 touch 命令。

需要注意的是,touch 命令不光可以用來建立檔案(當指定操作檔案不存在時,該命令會在當前位置建立一個空檔案),此命令更重要的功能是修改檔案的時間引數(但當檔案存在時,會修改此檔案的時間引數)。

Linux 系統中,每個檔案主要擁有 3 個時間引數(通過 stat 命令進行檢視),分別是檔案的訪問時間、資料修改時間以及狀態修改時間:

  • 訪問時間(Access Time,簡稱 atime):只要檔案的內容被讀取,訪問時間就會更新。例如,使用 cat 命令可以檢視檔案的內容,此時檔案的訪問時間就會發生改變。
  • 資料修改時間(Modify Time,簡稱 mtime):當檔案的內容資料發生改變,此檔案的資料修改時間就會跟著相應改變。
  • 狀態修改時間(Change Time,簡稱 ctime):當檔案的狀態發生變化,就會相應改變這個時間。比如說,如果檔案的許可權或者屬性發生改變,此時間就會相應改變。

touch 命令的基本格式如下:

[root@localhost ~]# touch [選項] 檔名

選項:

  • -a:只修改檔案的訪問時間;
  • -c:僅修改檔案的時間引數(3 個時間引數都改變),如果檔案不存在,則不建立新檔案。
  • -d:後面可以跟欲修訂的日期,而不用當前的日期,即把檔案的 atime 和 mtime 時間改為指定的時間。
  • -m:只修改檔案的資料修改時間。
  • -t:命令後面可以跟欲修訂的時間,而不用目前的時間,時間書寫格式為 YYMMDDhhmm

可以看到,touch 命令可以只修改檔案的訪問時間,也可以只修改檔案的資料修改時間,但是不能只修改檔案的狀態修改時間。因為,不論是修改訪問時間,還是修改檔案的資料時間,對檔案來講,狀態都會發生改變,即狀態修改時間會隨之改變(更新為操作當前檔案的真正時間)。

【例 1】 touch 命令建立檔案。

[root@localhost ~]#touch bols
\#建立名為 bols 的空檔案

【例 2】 在例 1 的基礎上修改檔案的訪問時間。

[root@localhost ~]#ll --time=atime bols
\#檢視檔案的訪問時間
-rw-r--r-- 1 root root 0 Sep 25 21:23 bols
\#檔案上次的訪問時間為 9 月 25 號 21:23
[root@localhost ~]#touch bols
[root@localhost ~]#ll --time=atime bols
-rw-r--r-- 1 root root 0 May 15 16:36 bols
\#而如果檔案已經存在,則也不會報錯,只是會修改檔案的訪問時間。

【例 3】 修改 bols 檔案的 atime 和 mtime。

[root@localhost ~]# touch -d "2017-05-04 15:44" bols
[root@localhost ~]# ll bols; ll --time=atime bols; ll --time=ctime bols
-rw-r--r-- 1 root root 0 May 4 2017 bols
-rw-r--r-- 1 root root 0 May 4 2017 bols
-rw-r--r-- 1 root root 0 Sep 25 21:40 bols
\#ctime不會變為設定時間,但更新為當前伺服器的時間