参考资料
- 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 \;