将照片用exif信息进行重命名

可以很方便的重命名照片,但是视频文件不能处理:

jhead -n%Y%m%d-%H%M%S DSCN0382.JPG
DSCN0382.JPG --> 20120408-150734.jpg

rename支持正则表达式,现在以一个具体的例子讲解该命令中正则表达式的使用:

将图片,命名是(1).jpg、(2).jpg……到(16720).jpg 把文件名改为00001.png、00002.png、…….16720.png

第一步:将后缀名.jpg改成.png

rename 's/\.jpg$/\.png/' *.jpg

第二步:讲左括号“(“去掉:

rename 's/^\(//' *.png

第三步,将右括号“)”去掉:

rename 's/\)//' *.png

第四步:将文件名字改成五位数,不足五位数的前面补0即可。创建脚本a.sh完成,脚本内容如下:

#!/bin/bash
for i in {1..9}
do 
   mv $i.png  0000$i.png
done
for i in {10..99}
do 
   mv $i.png  000$i.png
done
for i in {100..999}
do 
   mv $i.png  00$i.png
done
for i in {1000..9999}
do 
   mv $i.png  0$i.png
done

https://stackoverflow.com/questions/4710753/rename-jpg-files-according-to-date-created

为iphone录制的视频重命名:

mediainfo -f 1.MOV | grep com.apple.quicktime.creationdate
# 批量重命名(以MOV录制时间为准)
for i in `find -name '*.MOV'`;do
    newname=`mediainfo -f $i | grep com.apple.quicktime.creationdate | awk '{print $3}' | sed -e 's/.....$//' -e 's/-//g' -e 's/://g' -e 's/T/-/g'`;
    mv $i $newname.MOV; done

更简单的:

exiftool -m '-filename<CreateDate' -d '%Y%m%d-%H%M%%-03.c.%%e' *.JPG
exiftool -m '-filename<CreationDate' -d '%Y%m%d-%H%M%%-03.c.%%e' *.MOV
# xt1
exiftool -m '-filename<MediaCreateDate' -d '%Y%m%d-%H%M%%-03.c.%%e' *.MOV
exiftool -m '-filename<CreateDate' -d '%Y%m%d-%H%M%%-03.c.%%e' *.JPG

#!/bin/sh
for i in `ls *.xmp`;do
        filename_new=`cat $i | grep DateCreated | grep -oP "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+08:00" | sed -e 's/......$//' -e 's/-//g' -e 's/T/-/g' -e 's/://g'`
        filename_ori=`echo $i | cut -d'.' -f1`
        file_old=`ls | grep $filename_ori | grep -v xmp`
        file_ext=`echo $file_old | cut -d'.' -f2`
        mv $filename_ori.$file_ext $filename_new.$file_ext
        rm -f $i
done

# 去重
rdfind  -deleteduplicates true /backups
# 将所有目录文件移动到当前目录
find . -type f | sudo xargs -I {} mv {} .
  • linux/others/将照片用exif信息进行重命名.txt
  • 最后更改: 2020/01/14 10:21
  • 由 mrco