You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash或AppleScript将mmddyyyy日期转为mmddyy格式?

解决方法

Bash 实现

1. 直接修改原命令输出6位日期

你可以在原有awk命令里直接处理年份,提取后两位,一步到位得到mmddyy格式:

mdls "$f" | grep kMDItemContentCreationDate | head -n1 | awk '{gsub("[^[:digit:]]+"," "); print $2$3 substr($1,3)}'
  • 原理:substr($1,3)会截取年份($1对应原日期的年部分,比如2024)从第3位开始的子串,也就是后两位24,和前面的月($2)、日($3)拼接后就是mmddyy。
  • 注意给$f加上双引号,避免文件名包含空格时出错。

2. 先获取8位日期再做后续处理

如果不想修改原命令,也可以先把8位日期存到变量,再通过字符串截取得到目标格式:

# 获取8位日期
date8=$(mdls "$f" | grep kMDItemContentCreationDate | head -n1 | awk '{gsub("[^[:digit:]]+"," ");print $2$3$1}')
# 截取前4位(mmdd)+ 最后2位(yy)得到6位日期
date6="${date8:0:4}${date8:6}"
# 输出结果
echo "$date6"
  • 也可以用sed直接处理8位日期字符串:
echo "$date8" | sed 's/\(....\)..\(..\)/\1\2/'

AppleScript 实现

如果用AppleScript处理,不需要依赖mdls,直接获取文件创建日期并格式化:

-- 替换为你的PDF文件路径,或者从Bash传参时用POSIX file "$f"
set targetFile to POSIX file "/Users/xxx/Documents/test.pdf" as alias
set creationDate to creation date of targetFile

-- 格式化月、日、年为两位数字
set monthStr to text -2 thru -1 of ("0" & (month number of creationDate))
set dayStr to text -2 thru -1 of ("0" & (day of creationDate))
set yearStr to text -2 thru -1 of (year of creationDate as string)

-- 拼接成mmddyy格式
set formattedDate to monthStr & dayStr & yearStr

如果要从Bash中调用这个AppleScript,可以写成一行:

osascript -e 'set f to POSIX file "'"$f"'" as alias' -e 'set cd to creation date of f' -e 'set ms to text -2 thru -1 of ("0" & (month number of cd))' -e 'set ds to text -2 thru -1 of ("0" & (day of cd))' -e 'set ys to text -2 thru -1 of (year of cd as string)' -e 'return ms & ds & ys'

内容的提问来源于stack exchange,提问作者TJ Jaglinski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:40:24