這裡介紹 Linux 的 touch
指令的使用方法以及常見的範例。
Linux 的 touch
指令可用來更改檔案或目錄的時間戳記,除此之外,該指令也可以用來建立空檔案,以下是使用的教學與範例。
在 Linux 中的檔案有三種時間戳記:
我們可以使用 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