Linux中國

Linux touch 命令 – 為什麼我們需要改變時間戳?

什麼是 touch 命令

眾所周知,每個文件都被附有時間戳。這個時間戳記包括訪問時間和修改時間。而 Touch 命令主要就是用來修改文件的訪問時間和修改時間。

為什麼我們需要使用 touch 命令

既然 touch 命令描述的是改變時間戳,那麼我們可能會想為什麼我們需要去改變時間戳呢?這個問題會引發我們的深思。然而,我想有個理由可以解釋為什麼我們需要使用它。如果你參加了一個全球範圍的開源項目,那麼時間戳可能變得很重要。編譯源代碼文件可能需要同一地區的時間戳。如果未統一,程序可能會編譯失敗。(譯註:有強迫症的同學也很喜歡這個命令——就看不得亂七八糟的時間,;>)

不帶任何選項下運行 touch

最簡單的使用 touch 命令。只需鍵入:

$ touch file_name

請觀察下面的一張截圖。

Touch command

File_1.txt原來的時間戳是 12:42。在我們使用 touch 命令後,它改變為了 17:08。由此看出,默認情況下,touch 會將文件的時間戳改為當前時間。

只改變訪問時間

正如我們之前提到的,每個文件都附有訪問時間和修改時間。上面的時間戳是 17:08。我們可以看更多的細節。

Detail timestamp

我們發現訪問時間和修改時間的值是相同的都是 17:08:35 ,還有它們屬於同一時區 GMT +7。

如果現在我們要只改變訪問時間,我們需要使用-a選項。

$ touch -a file_1.txt

Touch -a option

如你所見,訪問時間變為了 17:51:37 ,但是修改時間仍為17:08:35。[譯註:原文為 Change time(狀態改變時間)應是作者筆誤]

只改變修改時間

我們可以使用-m選項來實現。現在我們用file_2.txt作個示例。

File_2.txt detail timestamp

$ touch -m file_2.txt

Touch -m option

現在修改時間從 12:42:20 改為了 17:57:20。請注意,當文件被訪問或修改時,狀態改變時間域的值總會對其記錄。

更改為自定義時間戳

-a-m選項都會將文件的時間戳改為現在當前時間。當然我們也可以更改為自定義時間戳。使用-t選項實現。

從上面示例示例中的 file_2.txt,我們看出它的時間戳是:

訪問時間:12:42:20
修改時間:17:57:20
執行日期:2014-01-14

假如我們想要將訪問時間和修改時間改為2014年1月12日 09:58:27。我們可以用下列命令來完成:

$ touch -t 201401120958.27 file_2.txt

Touch using -t option

-t 選項語法組成 :

[[CC]YY]MMDDhhmm [.SS]

CC - 年份的前兩位 
YY - 年份的後兩位 
MM - 月份 [01-12]
DD - 日期 [01-31]
hh - 時 [00-23]
mm - 分 [00-59]
SS - 秒 [00-61]

改變日期和時間的另一種方式

如果你覺得[[CC]YY]MMDDhhmm [.SS]格式不適合你,我們也可以使用 -d 選項。下面是-d選項使用的一個示例。

更改指定日期

舉例來說,我們有個名為 file_3.txt 的文件,它的相關屬性在下面的截圖中展示了。

File_3.txt detail timestamp

現在我們要將日期2014年1月14日改為2013年12月20日。可以使用下列命令:

$ touch -d '10-December-2013' file_3.txt

Change date using -d option

不出意料,訪問時間和修改時間的日期已經改為了2013年12月10日。

改變時區

如果我們想改變指定GMT的時間,我們也可以使用-d選項。先讓file_3.txt 移回當前時間。

$ touch file_3.txt

Reset file_3.txt timestamp

不難發現 file_3.txt 的時區為 GMT +0700。要改為 GMT3 時區,我們只需要鍵入如下命令:

$ touch -d GMT3 file_3.txt

Change into GMT3 timezone

好的,現在時間已經改為了 10:00:00 AM。

結合參數下使用-d選項

還可以用很酷的方式使用-d選項。請觀察下面的圖片。

Change date using keyword

我們可以將單詞 next Sunday 和 GMT 3合成一個值,而 touch 命令仍然能識別它。日期已經改為了2014年1月21日,而當前的日期為2014年1月14日。

還有另一個-d選項的示例。 首先,我們要將file3_3.txt重置到當前日期和時間。

$ touch file_3.txt

Reset file_3.txt timestamp

然後我們嘗試這個命令:

$ touch -d '1 year ago 13:43:07' file_3.txt

Change date using keyword

太震撼了,Touch 甚至能識別單詞『1 year ago』。現在的日期以及時間已經改為了2013年1月14日,13:43:07。

創建一個空文件

當你運行 touch 命令目標文件不存在時,touch 會創建一個同名的空文件。

$ touch file_10.txt

Create an empty file

同時創建多個文件

你可以用空格將目標文件分割開來,以此來創建多個文件。

$ touch doc_10.txt doc_20.txt doc_30.txt

Create multiple files

總結

如果你要處理關於文件或目錄的時間戳問題,那麼 Touch 會對你很有用的。一如既往得你也可以鍵入man touchtouch --help來顯示幫助頁面了解更多細節。

via: http://linoxide.com/linux-command/linux-touch-command/

譯者:Luoxcat 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國