将 Automator Shell 脚本中的 YYYYMMDD 创建日期重新格式化为 YYMMDD 创建日期

问题描述 投票:0回答:1

我只想将我的自动化快速操作从当前脚本 YYYYMMDD 更改为 YYMMDD。看起来应该很简单,但我已经尝试解决这个问题好几天了&&我不知所措。

嗨,这就是我所拥有的:

for f in "$@"
do
filedate=$(date -r $(stat -f %B $f) +%Y%m%d);
filename=$f:t
filepath=$f:h
mv $filepath/{"$filename","$filedate $filename"}
done

我已经到处搜索如何调整这个&&我似乎无法弄清楚。我知道,我知道 YYYYMMDD 是首选,但我想要 YYMMDD 格式。

另外,我尝试这样做:

for f in "$@"
do
filedate=$(date -r $(stat -f %B $f) +%Y%m%d_);
filename=$f:t
filepath=$f:h
mv $filepath/{"$filename","$filedate $filename"}
done

在日期末尾我加了下划线,因为我希望所有日期都遵循该下划线。但是当我运行它时,它会返回一个空格。以 YYYYMMDD_ blahblah.png 为例。由于这个空间甚至不在脚本中,我该如何去掉它?另外,关于我可以在哪里了解更多有关自动化和脚本编写的建议也很棒。我知道那里有很多东西,但如果有任何特别的建议那就太棒了。谢谢。

shell date automator
1个回答
0
投票

在与

date
命令一起使用的格式字符串中,
%Y
扩展为 4 位年份(当前为“2024”),“%y”扩展为 2 位年份(当前为“24”)。只需将“%Y”更改为“%y”即可。

(我相信你的话,你有充分的理由这样做。)

至于空间,就在你的

mv
命令中:

mv $filepath/{"$filename","$filedate $filename"}
                                    ^HERE

我认为您想要将

filedate
(尾随下划线)和
$filename
连接起来,不带空格。

mv $filepath/{"$filename","$filedate$filename"}

或者您可以将

$filedate
设置为不带下划线的值,并在 mv
 命令中添加下划线:

mv $filepath/{"$filename","${filedate}_$filename"}
我个人认为这样更干净。请注意,您需要添加花括号,因为 

_

 可能是标识符的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.