Linux touch 建立空檔案與修改時間戳

touch 是一個很神奇的指令。大多數初學者用它來「建立新檔案」,但它原本的設計目的是「摸一下」檔案,更新它的時間戳記。

常見用途

1. 建立空白檔案

如果指定的檔案不存在,touch 會直接建立一個大小為 0 的空白檔案。這是建立新檔案最快的方法。

# 建立一個名為 new_file.txt 的空檔案
touch new_file.txt

你也可以一次建立多個:

touch file1.js file2.css file3.html

2. 更新檔案時間戳記 (Timestamp)

如果檔案已經存在,touch 不會 修改檔案的內容,但它會把檔案的:

  • Access Time (atime): 最後讀取時間
  • Modify Time (mtime): 最後修改時間

更新為 目前的系統時間

這有什麼用?

  • 觸發某些依賴「修改時間」的自動化備份或編譯工具 (如 Make)。
  • 測試 find 指令依照時間搜尋的功能。
# 假設 file.txt 上次修改是三天前
# 執行 touch 後,它的修改時間會變成「現在」
touch file.txt

進階參數

-a:只修改讀取時間 (Access time)

touch -a file.txt

-m:只修改變更時間 (Modify time)

touch -m file.txt

-t:指定特定時間

如果你不想用「現在」的時間,可以用 -t 指定一個過去或未來的時間。 格式為 [[CC]YY]MMDDhhmm[.ss]

# 將檔案時間設定為 2025年12月25日 12:00
touch -t 202512251200 file.txt

-c:不建立新檔案 (No create)

如果您只想更新時間,但「若是檔案不存在,則不建立新檔案」,請加上 -c

touch -c ghost_file.txt
# 如果 ghost_file.txt 不存在,什麼都不會發生