這裡介紹 Linux 的 touch 指令的使用方法以及常見的範例。

Linux 的 touch 指令可用來更改檔案或目錄的時間戳記,除此之外,該指令也可以用來建立空檔案,以下是使用的教學與範例。

更改檔案時間戳記

在 Linux 中的檔案有三種時間戳記:

  • access time:檔案最後被讀取的時間。
  • modify time:檔案最後被修改的時間。
  • change time:檔案屬性(例如權限、擁有者等)最後被修改的時間。

我們可以使用 stat 指令來查看一個檔案的這三種時間戳記:

stat test.sh
  File: test.sh
  Size: 20        	Blocks: 8          IO Block: 4096   普通檔案
Device: 806h/2054d	Inode: 788497      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  gtwang)   Gid: ( 1000/  gtwang)
Access: 2018-08-22 13:53:47.014886494 +0800
Modify: 2018-08-22 13:53:39.149604000 +0800
Change: 2018-08-22 13:53:39.149604000 +0800
 Birth: -

當我們使用 touch 更改檔案(或目錄)的時間戳計時,預設會將三種時間戳記都設定為目前的時間:

# 更改時間戳記
touch test.sh

若只要更新 access time,可以加上 -a 參數:

# 更新 access time
touch -a test.sh

若只要更新 modify time,可以加上 -m 參數:

# 更新 modify time
touch -m test.sh

複製時間戳記

如果想要將一個檔案的時間戳記直接複製到另外一個檔案上,可以使用 -r 參數:

# 複製時間戳記
touch -r source target

這樣就可以將 source 這個檔案的 access time 與 modify time 都複製到 target 這個檔案上。

指定時間戳記

在使用 touch 更改時間戳計時,我們也可以使用 -t 參數來指定時間,時間的格式如下:

[[CC]YY]MMDDhhmm[.ss]

其中各欄位的意義為:

  • CC:西元年的前兩位數字。
  • YY:西元年的後兩位數字。
  • MM:月份。
  • DD:日。
  • hh:時。
  • mm:分。
  • ss:秒。

若要將檔案的日期修改為 2 月 5 號 13 點 51 分,則可執行:

# 指定時間戳記
touch -t 02051351 test.sh
stat test.sh
  File: test.sh
  Size: 20        	Blocks: 8          IO Block: 4096   普通檔案
Device: 806h/2054d	Inode: 788497      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  gtwang)   Gid: ( 1000/  gtwang)
Access: 2018-02-05 13:51:00.000000000 +0800
Modify: 2018-02-05 13:51:00.000000000 +0800
Change: 2018-09-13 15:45:55.098451889 +0800
 Birth: -

建立空檔案

touch 最常被用來建立空的檔案,只要執行 touch 並指定檔案名稱,當指定的檔案不存在時,touch 就會自動建立一個空檔案,並將檔案的時間設定為目前的時間:

touch empty.txt

這樣就會建立一個檔名為 empty.txt 的空檔案。

若要一次建立多個空檔案,就指定多的檔案名稱即可:

touch empty1.txt empty2.txt empty3.txt

或是使用 bash 的小技巧,自動產生多個檔案名稱:

# 建立 10 個空檔案
touch empty{1..10}.txt

這樣就會建立 10 個空檔案。

如果我們只想要改變檔案的時間戳記,而當檔案不存在時,不要讓 touch 自動建立空檔案,則可加上 -c 參數:

# 不要自動建立空檔案
touch -c file.txt

參考資料:Linux Handbook