我正在寻找一种以编程方式将文件的日期添加到文件名中。我在Mac,Yosemite(10.10)。
使用Bash,我已经付出了相当大的努力,但到目前为止还没太新。这就是我到目前为止所拥有的:
#!/bin/bash
#!/bin/bash
(IFS='
'
for x in `ls -l | awk '{print$9" "$7"-"$6"-"$9}'`
do
currentfilename=$(expr "$x" : '\($substring\)')
filenamewithdate=$(expr "$x" : '.*\($substring\)')
echo "$currentfilename"
echo "$filenamewithdate"
done)
这里的想法是捕获详细的ls输出,使用awk捕获具有文件名($ 9)的列的字符串,以及日期字段($ 7和$ 6),然后循环该输出以捕获先前的文件名和新的带有日期的文件名,用于将文件从旧文件名转换为新文件名。 awk语句添加了一个空格,用于将当前文件名与new分隔开。现在,echo语句用于测试我是否能够解析awk输出。我只是不知道要为$ substring添加什么来获取所需的字符串部分。
我还有更多关于Bash脚本的知识,所以我希望你在我学习的时候能够忍受我。有什么指导吗?
感谢。
答案 0 :(得分:4)
查看stat
man page,您需要:
for file in *; do
filedate=$(stat -t '%Y-%m-%dT%H:%M:%S' -f '%m' "$file")
newfile="$file-$filedate"
echo "current: $file -> new: $newfile"
done
根据您的喜好调整您喜欢的日期时间格式。
您可以使用
保存一行for file in *; do
newfile=$(stat -t '%Y-%m-%dT%H:%M:%S' -f '%N-%m' "$file")