我一直在使用以下脚本将照片整理到“日期”目录中:
for x in *.JPG; do
d=$(date -r "$x" +%Y-%m-%d)
mkdir -p "$d"
mv -- "$x" "$d/"
done
这个脚本很好用。我的照片文件遵循相同的命名约定“ IMG_20131125_090000.JPG”,即拍摄的日期和时间。有没有一种方法可以更改上面的脚本,以便仍然将其分类到日期目录中,但是使用文件名中的日期而不是使用文件被修改的日期?
已固定答案以获取2013-11-25而不是20131125
如果您的脚本使用bash
兼容的外壳程序运行,则最简单的解决方案是替换
d=$(date -r "$x" +%Y-%m-%d)
和
d="${x:4:4}-${x:8:2}-${x:10:2}"
具有expr的便携式解决方案:
d=$(expr substr "$x" 5 4)-$(expr substr "$x" 9 2)-$(expr substr "$x" 11 2)
如果您只需要20131125而不是2013-11-25作为目录名,则还可以
sed解决方案:
d=$(echo "$x" | sed 's/.*_\([0-9]*\)_.*/\1/')
这些sed
命令将文件名替换为下划线之间的数字(=日期)。
用awk解决方案:
d=$(echo "$x" | awk -F _ '{print $2}')
解决方案:
d=$(echo "$x" | cut -d_ -f 2')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句