如何在Bash中以yyyymmdd_hhmmss格式返回文件创建日期?
获取文件创建日期(yyyymmdd_hhmmss格式)
Windows 平台
PowerShell 实现
直接通过PowerShell的日期格式化功能获取:
Get-Item "C:\目标文件路径\file.txt" | Select-Object -ExpandProperty CreationTime | Get-Date -Format "yyyyMMdd_HHmmss"
替换C:\目标文件路径\file.txt为你的实际文件路径即可。
CMD 命令实现
借助wmic工具解析创建时间并格式化:
@echo off set "target_file=C:\目标文件路径\file.txt" for /f "tokens=2 delims==" %%a in ('wmic datafile where name^="%target_file:\=\\%" get creationdate /value') do set "raw_date=%%a" echo 格式化后的创建日期:%raw_date:~0,8%_%raw_date:~8,6%
- 第一行设置目标文件路径
- 第二行通过
wmic获取文件的原始创建时间(格式为YYYYMMDDHHMMSS.ffffff+时区偏移) - 第三行截取前8位日期和接下来6位时间,拼接成目标格式
Linux/macOS 平台
Linux 实现
注意:部分Linux文件系统(如ext4)默认不记录文件创建时间(birth time),若stat命令返回的创建时间为空,可改用修改时间(将%w替换为%y):
# 获取创建时间(若文件系统支持) stat -c "%w" "/目标文件路径/file.txt" | cut -d' ' -f1,2 | sed -e 's/-//g' -e 's/://g' -e 's/ /_/' # 若创建时间不可用,改用修改时间 stat -c "%y" "/目标文件路径/file.txt" | cut -d' ' -f1,2 | sed -e 's/-//g' -e 's/://g' -e 's/ /_/'
%w对应文件创建时间,%y对应修改时间- 通过
cut提取日期和时间部分,再用sed去除分隔符并拼接格式
macOS 实现
macOS的stat工具支持直接指定创建时间的输出格式:
stat -f "%SB" -t "%Y%m%d_%H%M%S" "/目标文件路径/file.txt"
%SB表示文件的创建时间-t "%Y%m%d_%H%M%S"指定输出格式为目标格式
内容的提问来源于stack exchange,提问作者Entropy1024
相关产品推荐
相关产品推荐

