Linux touch命令
参考资料
- Linux 常用命令 - touch 【创建空文件与修改时间戳】
 
目录
- 一. 用法简介
 - 二. 配合扩展字符,批量创建文件
 - 三. 修改文件的时间戳
 - 3.1 `-t` 配置项
 - 3.2 `-d` 配置项
 - 3.3 配合find命令实现批量时间戳修改
 
- 四. 结合 `find` 批量创建相同时间的新文件
 
一. 用法简介
⏹当指定的文件不存在的时候,创建一个空文件;当文件存在的时候,修改文件的时间戳为当前的时间。
-d, --date:将文件时间更新为指定的日期时间,而非当前的时间;日期格式需要符合系统的日期格式要求。-t:将文件时间更新为指定格式[[CC]YY]MMDDhhmm[.ss]的日期时间,而非当前的时间。-c:仅修改既存文件的时间戳,如果指定的文件并不存在,不会创建新的文件。-m:只更新文件的修改时间。
touch [OPTION]... FILE...
 
二. 配合扩展字符,批量创建文件
🧐对于测试时,需要批量创建若干文件的场景,此方式很实用🧐
- 创建 file1.txt ~ file5.txt 的空文件
 
touch file{1..5}.txt
 
- 创建2023年 ~ 2024年每天的文件(会创建出不存在的月份的文件,如20240231,之后手动删除即可)
 
touch {2023..2024}{01..12}{01..31}_PAY_INFO_MSG.csv
 
- 还可以嵌套创建
 
apluser@ubuntu24-01:~/work/20250326$ touch file_{1..3}.{mp{3..4},m4{a,b,p,v}}
apluser@ubuntu24-01:~/work/20250326$
apluser@ubuntu24-01:~/work/20250326$ ls | xargs -L 6
file_1.m4a file_1.m4b file_1.m4p file_1.m4v file_1.mp3 file_1.mp4
file_2.m4a file_2.m4b file_2.m4p file_2.m4v file_2.mp3 file_2.mp4
file_3.m4a file_3.m4b file_3.m4p file_3.m4v file_3.mp3 file_3.mp4
 
三. 修改文件的时间戳
3.1 -t 配置项
 
- 将 file.txt 的时间戳设为 
2024-03-25 12:30,如果文件不存在的话会创建。 
apluser@ubuntu24-01:~/work/20250326$ touch -t 202403251230 file.txt
apluser@ubuntu24-01:~/work/20250326$
apluser@ubuntu24-01:~/work/20250326$ ls -l --time-style="+%Y-%m-%d %H:%M:%S"
total 0
-rw-rw-r-- 1 apluser apluser 0 2024-03-25 12:30:00 file.txt
 
3.2 -d 配置项
 
-d指定了时间格式,时间格式需要是字符串
apluser@ubuntu24-01:~/work/20250326$ ls -l --time-style="+%Y-%m-%d %H:%M:%S"
total 0
-rw-rw-r-- 1 apluser apluser 0 2024-03-25 12:30:00 file.txt
apluser@ubuntu24-01:~/work/20250326$
apluser@ubuntu24-01:~/work/20250326$ touch -d "2020-01-01 10:00" file.txt
apluser@ubuntu24-01:~/work/20250326$
apluser@ubuntu24-01:~/work/20250326$ ls -l --time-style="+%Y-%m-%d %H:%M:%S"
total 0
-rw-rw-r-- 1 apluser apluser 0 2020-01-01 10:00:00 file.txt
 
3.3 配合find命令实现批量时间戳修改
- 文件较少时使用, 例如只有几百个
 
find /path/to/dir -type f -exec touch {} \;
 
- 文件很多时使用, 执行效率更高
 -print0和-0是为了避免有特殊符号的文件名才使用的。如果没有特殊符号的文件名,可不用
find /path/to/dir -type f -print0 | xargs -0 touch
 
四. 结合 find 批量创建相同时间的新文件
 
- 在 
/path下,每个文件都创建一个同时间戳的.new文件 -r选项的作用是 复制另一个文件的时间戳(reference 参考时间)
find /path -type f -exec touch -r {} {}.new \;
                