200字
touch
2025-10-10
2025-10-10

在Linux中是一个用于创建空文件或修改文件/目录时间戳的命令行工具。

该命令可以创建新的空文件,也可以更新已有文件或目录的访问时间和修改时间(默认同时更新,也可单独指定),常用于文件创建、时间戳调整及脚本中的文件初始化。

 touch [选项] <文件路径1> <文件路径2> ...

常用选项

  • -a:"atime",仅更新文件的访问时间(access time),不改变修改时间,例如 touch -a readme.txt 标记文件被访问过,但不修改其内容时间。

  • -m:"mtime",仅更新文件的修改时间(modification time),不改变访问时间,例如 touch -m data.csv 模拟文件内容被修改,但实际未访问。

  • -t <时间>:"timestamp",指定更新为特定的时间戳,格式为 [[CC]YY]MMDDhhmm[.ss](世纪、年、月、日、时、分、秒),例如 touch -t 202310011200 log.txt 将文件时间设为2023年10月1日12:00。

  • -d <时间字符串>:"date string",通过自然语言时间字符串指定时间,例如 touch -d "2 days ago" note.txt 将文件时间设为两天前,支持 yesterday"next week" 等格式。

  • -c:"no create",仅更新已有文件的时间戳,若文件不存在则不创建,例如 touch -c missing.txt 不会创建 missing.txt,适合避免误创建文件。

参考示例

  • 示例1:创建多个空文件 执行 touch file1.txt file2.csv image.png,在当前目录创建三个空文件,常用于快速初始化项目所需的空白文件。

  • 示例2:更新文件的访问和修改时间为当前时间 执行 touch report.pdf,若 report.pdf 已存在,将其访问时间和修改时间更新为当前系统时间;若不存在,则创建空文件,适合标记文件“最近处理过”。

  • 示例3:仅修改文件的访问时间 执行 touch -a /var/log/syslog,仅更新系统日志文件的访问时间(表示“已查看”),但保留其内容的修改时间,用于记录文件的访问痕迹。

  • 示例4:将文件时间戳修改为指定日期 执行 touch -t 202301010000 old_data.txt,将 old_data.txt 的时间戳强制设为2023年1月1日0点,常用于测试依赖文件时间的程序。

  • 示例5:用自然语言指定时间修改 执行 touch -d "last Friday 3pm" schedule.txt,将文件时间设为上周五下午3点,比 -t 选项更直观,适合非精确时间调整。

  • 示例6:避免创建新文件,仅更新已有文件时间 执行 touch -c config.ini,若 config.ini 存在则更新其时间戳,若不存在则无操作,适合脚本中“只更新不创建”的场景。

  • 示例7:批量创建按序号命名的文件 执行 touch log_{1..10}.txt,一次性创建 log_1.txtlog_10.txt 共10个空文件,适合生成系列日志文件或测试用例文件。

  • 示例8:修改目录的时间戳 执行 touch -d "now" docs/,将 docs 目录的时间戳更新为当前时间,目录本身的时间戳变化不影响其内部文件,常用于标记目录的“最近维护”时间。


评论