【发布时间】:2022-01-04 06:24:19
【问题描述】:
我想使用此代码 sn-p 使用文件名更新文件日期和时间戳:
示例文件名:
2009.07.04-03.42.01.mov
2019.06.08-01.12.08.mov
我收到以下错误““运行 Shell 脚本”操作遇到错误:“触摸:超出范围或非法时间规范:[[CC]YY]MMDDhhmm[.SS]”
我将如何修改此代码 sn-p?
for if in "$@"
do
date_Time=$(echo "$if" | awk '{ print substr( $0, 1, length($0)-7 ) }' | sed 's/\.//g' | sed 's/-//')
touch -t "$date_Time" "$if"
done
更新(2022 年 1 月 5 日):...... 我还希望代码适用于以下文件名格式...
以及没有时间信息的文件名(时间默认为下午 12 点):
2009.07.04.mov
2019.06.08.mov
以及带有描述信息的文件名:
2009.07.04-file-description.mov
2019.06.08-video-file info.mp4
2019.06.08-video-old-codec.avi
【问题讨论】:
-
你的代码对我有用,虽然有点笨拙。你究竟是如何运行你的脚本的?您需要将要修改的文件的名称作为命令行参数传递,不带前导路径。
-
你没有在错误发生的时候发布你的变量
date_Time和if的内容,所以很难说出了什么问题。我建议您在打开set -x的情况下运行循环。也许其中一个文件的名称模式与您预期的略有不同。