touch命令

linux中的touch命令不常用,一般用來修改文件時間戳,或者新建一個不存在的文件。

1.命令格式

touch [選項]… 文件…

2.命令參數

  • -a--time=atime--time=access--time=use 只更改存取時間。
  • -c--no-create不建立任何文檔。
  • -d 使用指定的日期時間,而非現在的時間。
  • -f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
  • -m--time=mtime--time=modify  只更改變動時間。
  • -r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
  • -t 使用指定的日期時間,而非現在的時間。

3.命令功能

touch命令參數可更改文檔或目錄的日期時間,包括存取時間和更改時間。

4.使用範例

實例一

創建不存在的文件,用法如下所示 -

命令:

touch log1.log log2.log

輸出:

[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$ touch log1.log log2.log
[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$

如果log-noexists.log不存在,則不創建文件

[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$ touch -c log-noexists.log
[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$

實例二

更新log2.log的時間和log2.txt時間戳相同
命令:

touch -r log2.log log2.txt

輸出:

[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 12 22:43 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$ touch -r log2.log log2.txt
[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$

實例三

設定文件的時間戳
命令:

touch -t 201910102034.50 log1.log

輸出:

[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Oct 10  2019 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$ [yiibai@localhost test]$ ll
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$ touch -t 201910102034.50 log1.log
[yiibai@localhost test]$ ll
total 4
-rw-rw-r--. 1 yiibai yiibai  0 Oct 10  2019 log1.log
-rw-rw-r--. 1 yiibai yiibai  0 Feb 13 01:42 log2.log
-rw-rw-r--. 1 yiibai yiibai 25 Feb 13 01:42 log2.txt
-rw-rw-r--. 1 yiibai yiibai  0 Feb 12 22:44 log3.txt
[yiibai@localhost test]$

說明:
-t time 使用指定的時間值 time 作爲指定文件相應時間戳記的新值。此處的 time 規定爲如下形式的十進制數:
[[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日的時間是錯誤的。