功能:對已經存在檔案的時間進行修改,存取時間(access time)、修改時間(modification time)。對不存在的檔案,進行建立新的空白檔案。
語法:touch [選項] 檔案
短選項 | 長選項 | 含義 |
---|---|---|
-a | --time=atime 或--time=access 或--time=use |
只更改存取時間 |
-m | --time=mtime 或--time=modify |
只更改變動時間 |
-d TIME | --date=字串 | 設定時間與日期,可以使用各種不同的格式 |
-t STAMP | 設定時間戳。STAMP是十進位制數: [[CC]YY]MMDDhhmm[.SS] CC為年數中的前兩位,即”世紀數”;YY為年數的後兩位,即某世紀中的年數。如果不給出CC的值,則touch將把年數CCYY限定在1969--2068之內。 MM為月數,DD為天將把年數CCYY限定在1969--2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鐘數SS為秒數.此處秒的設定範圍是0--61,這樣可以處理閏秒。 這些數字組成的時間是環境變數TZ指定的時區中的一個時間。由於系統的限制,早於1970年1月1日的時間是錯誤的 |
|
-r FILE | 把指定文件或目錄的日期時間,統統設成和參考文件或目錄的日期時間相同 | |
-c | --no-create | 不建立任何文件 |
Linux的多個time屬性:
access time是文件最後一次被讀取的時間。因此閱讀一個文件會更新它的access時間,但它的modify時間和change時間並沒有變化。cat、more 、less、grep、sed、tail、head這些命令都會修改檔案的access時間。
change time是文件的索引節點(inode)發生了改變(比如位置、使用者屬性、組屬性等)。chmod, chown,create,mv等動作會將Linux檔案的change time修改為系統當前時間。
modify time是文字本身的內容發生了變化。[文件的modify時間也叫時間戳(timestamp).] ls命令看到的是modify time。用vi等工具編輯一個檔案儲存後,modify time會被修改。
建立新檔案
[root@jfht ~]# ls -l new.txt
ls: new.txt: 沒有那個檔案或目錄
[root@jfht ~]# touch new.txt
[root@jfht ~]# ls -l new.txt
-rw-r--r-- 1 root root 0 10-11 22:40 new.txt
[root@jfht ~]#
更改檔案時間為當前時間
[root@jfht ~]# ls -l new.txt
-rw-r--r-- 1 root root 0 10-11 22:40 new.txt
[root@jfht ~]# touch new.txt
[root@jfht ~]# ls -l new.txt
-rw-r--r-- 1 root root 0 10-11 22:41 new.txt
更改檔案時間為指定時間
[root@jfht ~]# date
2010年 10月 11日 星期一 22:42:54 CST
[root@jfht ~]# touch -t 10112200 new.txt
<=== 格式 MMDDhhmm
[root@jfht ~]# ls -l new.txt
-rw-r--r-- 1 root root 0 10-11 22:00 new.txt
[root@jfht ~]# touch -t 200910112200 new.txt
<=== 格式 yyyyMMDDhhmm
[root@jfht ~]# ls -l new.txt
-rw-r--r-- 1 root root 0 2009-10-11 new.txt
[root@jfht ~]#
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
[root@localhost test]# touch -t 201211142234.50 log.log
201211142234.50時間戳
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 2012-11-14 log.log
將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
將檔案時間改成與別的檔案相同
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 16:01 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log
[root@localhost test]# touch -r log.log log2012.log
[root@localhost test]# ll
-rw-r--r-- 1 root root 0 10-28 14:48 log2012.log
-rw-r--r-- 1 root root 0 10-28 16:01 log2013.log
-rw-r--r-- 1 root root 0 10-28 14:48 log.log