在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.txt到log_10.txt共10个空文件,适合生成系列日志文件或测试用例文件。示例8:修改目录的时间戳 执行
touch -d "now" docs/,将docs目录的时间戳更新为当前时间,目录本身的时间戳变化不影响其内部文件,常用于标记目录的“最近维护”时间。