linux之touch命令修改檔案的時間戳

小 樓 一 夜 聽 春 雨發表於2016-03-11

功能:對已經存在檔案的時間進行修改,存取時間(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 

相關文章