批量重命名文件(bash)

时间:2012-09-08 09:47:00

标签: bash rename

我有几个带照片的文件夹,每个平均有1.5万张照片,现在我想要一个脚本来重命名文件。 可以是文件的名称 obraz2.jpg.1到obraz2.jpg.1500现在每个文件名的chcaiłbym都被更改为创建日期,例如:010912-04-00-34.jpg文件从2012年9月1日起4分0秒34,有一个bash脚本

#!/bin/bash
# Copy jpg files in a directory to a new name based solely on creation date
# FROM: obraz2.jpg.1 > 1500  Created on: 2012-04-18 18:51:44
# TO:    20120418_185144.jpg
for i in *.*
do
#  mod_date=$(stat -c "%y" "$i"|sed 's/\..*$//')
#  mod_date=$(stat -c "%y" "$i"|awk '{print $1"_"$2}'|sed 's/\..*$//')
mod_date=$(stat --format %y "$i"|awk '{print $1"_"$2}'|cut -f1 -d'.'|sed 's/[: -]//g')
 cp "$i" "$mod_date".jpg
done

我只是有一个问题就是他给的名字 010912-04-00-34.jpg这不是一个做20120418_185144.jpg的脚本应该改变什么来使它像我想要的那样,我会添加脚本,我发现自己没有写。

1 个答案:

答案 0 :(得分:0)

要重新格式化日期字符串,您可以使用date程序,如下所示:

for i in *.*; do
     stat_date=$(stat --format %y "$i"|awk '{print $1"_"$2}' | cut -f1 -d'.'|sed 's/_/ /g')
     date_fmt=$(date --date="$stat_date" +"%d%m%y-%H-%M-%S")
     cp $i ${date_fmt}.jpg
done