【问题标题】:Script to rename photos with exif使用 exif 重命名照片的脚本
【发布时间】:2015-01-15 00:25:53
【问题描述】:

我有问题。我想编写一个 bash 脚本来重命名不同文件夹中的照片。 你有什么建议吗?

输入是:

  • DSC3201.jpg
  • DSC3202.jpg
  • DSC3202-1.jpg
  • ecc

我想要的输出是:

  • 20141102_123259.jpg
  • 20141102_124502.jpg
  • 20141102_124502(1).jpg
  • ecc

输出的格式是:yearmounthday_hourminuteseconds.ext,当有照片被修改时(我在名字的最后部分加上-1)我想要一个递增的数字(1)或(2)ecc...

对不起,我的英语不好,但我希望你能理解我的问题。非常感谢你:))

编辑:感谢您的回复!我这样做了:

#!/bin/bash

declare dir_photo=$(ls $PWR | grep .jpg)

for N in $dir_photo do exiftool -d %Y%m%d_%H%M%S $N | awk -F': ' '/File Modification Date/{print $2}'  done

但是如果我想要创建时间而不是修改时间我必须改变什么?

编辑 2:对不起,脚本运行起来很迷人!非常感谢!!!

【问题讨论】:

    标签: bash scripting rename photo exif


    【解决方案1】:

    谢谢大家。 对“后代将”:D 我知道有两种方法可以解决这个问题:

    使用 exiftool:

    #!/bin/bash
    
    dir_photo=(*.jpg)
    
    for N in ${dir_photo[@]};  do
        date_str=$(
            exiftool -d %Y%m%d_%H%M%S $N |
            awk -F': ' '/File Modification Date/{print $2}'
        )
        print "$N $date_str"
    done
    

    或者用jhead:

    jhead -n%Y%m%d_%H%M%S *.jpg
    

    选择你喜欢的;)

    【讨论】:

      【解决方案2】:

      使用您的格式获取日期的解决方案:

      $ exiftool -d %Y%m%d_%H%M%S image.png |
          awk -F': ' '/File Modification Date/{print $2}'
      

      输出:

      20140429_110955
      

      开始编写脚本!

      #!/bin/bash
      
      dir_photo=(*.jpg)
      
      for N in ${dir_photo[@]};  do
          date_str=$(
              exiftool -d %Y%m%d_%H%M%S $N |
              awk -F': ' '/File Modification Date/{print $2}'
          )
          print "$N $date_str"
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 2023-03-02
        • 2011-04-02
        相关资源
        最近更新 更多