Linux touch命令是系统自带的基础文件操作工具,主要用于创建空文件或者修改已有文件的访问时间和修改时间,在文件管理、脚本编写等场景中都有广泛应用。

touch命令基本语法
touch命令的基础语法格式如下:
touch [参数] 文件名
如果不添加任何参数,直接执行touch 文件名时,会按照默认规则处理文件:如果文件不存在则创建空文件,如果文件已存在则更新文件的访问时间和修改时间为当前系统时间。
常用参数说明
touch命令支持多个参数来调整操作行为,以下是常用的参数列表:
| 参数 | 作用说明 |
|---|---|
| -a | 只修改文件的访问时间,不改变修改时间 |
| -m | 只修改文件的修改时间,不改变访问时间 |
| -c | 不创建新文件,仅当文件存在时才更新时间戳 |
| -d | 使用指定的日期时间更新文件时间戳,而非当前系统时间 |
| -r | 参考指定文件的时间戳,将目标文件的时间戳设置为和参考文件一致 |
| -t | 使用指定的时间格式([[CC]YY]MMDDhhmm[.ss])更新文件时间戳 |
常见使用场景
1. 创建单个空文件
当需要在当前目录创建一个不存在的空文件时,直接使用touch加文件名即可:
# 创建名为test.txt的空文件 touch test.txt # 查看文件是否创建成功 ls -l test.txt
2. 创建多个空文件
touch命令支持同时传入多个文件名,一次性创建多个空文件:
# 同时创建file1.txt、file2.txt、file3.txt三个空文件 touch file1.txt file2.txt file3.txt # 查看创建结果 ls -l file*.txt
3. 修改文件时间戳为当前时间
如果文件已经存在,执行touch命令会将其访问时间和修改时间更新为当前系统时间:
# 先查看文件原有时间戳 ls -l test.txt # 更新文件时间戳 touch test.txt # 再次查看时间戳,确认已更新 ls -l test.txt
4. 只修改访问时间或修改时间
通过-a和-m参数可以单独修改对应时间:
# 只修改test.txt的访问时间 touch -a test.txt # 只修改test.txt的修改时间 touch -m test.txt
5. 使用指定时间更新时间戳
可以通过-d参数指定具体的时间来更新文件时间戳:
# 将test.txt的时间戳修改为2024年5月1日10点30分 touch -d "2024-05-01 10:30:00" test.txt # 查看修改后的时间戳 ls -l test.txt
也可以使用-t参数按照指定格式设置时间:
# 格式为MMDDhhmm,即5月1日10点30分 touch -t 05011030 test.txt
6. 参考其他文件的时间戳
如果需要将文件A的时间戳设置为和文件B一致,可以使用-r参数:
# 假设file1.txt是参考文件,将file2.txt的时间戳设置为和file1.txt一致 touch -r file1.txt file2.txt # 对比两个文件的时间戳 ls -l file1.txt file2.txt
7. 避免创建新文件
如果只想更新已有文件的时间戳,不希望touch命令创建不存在的文件,可以加上-c参数:
# 如果not_exist.txt不存在,不会创建该文件,也不会报错 touch -c not_exist.txt # 查看当前目录,确认没有创建新文件 ls not_exist.txt 2>&1
使用注意事项
- 执行touch命令需要有对应目录的写权限,否则会提示权限不足无法操作。
- 如果文件名包含空格,需要用引号包裹文件名,例如
touch "my file.txt"。 - 修改时间戳时,指定的时间不能超过系统支持的时间范围,否则会设置失败。
touch命令虽然功能简单,但在批量文件处理、脚本自动化等场景中非常实用,熟练掌握其用法可以有效提升Linux系统下的文件操作效率。