将一堆PNG图像重命名为".jpg"扩展名为".png"

Fra*_*ank 6 bash scripting png jpeg image

所以我有一个包含数千个图像文件的文件夹,所有这些文件都保存为.jpg.

问题是其中一些文件实际上是PNG图像文件,因此它们不会在很多程序中打开,除非我手动将其扩展名更改为.png.例如,Ubuntu图像查看器抛出此错误:

"解释JPEG图像文件时出错(不是JPEG文件:以0x89 0x50开头)"

我已经运行了一些这些文件的hexdump来确认这个错误,然后检查出来.

我正在寻找一种简单的方法来查找其他文件中扩展错误的所有文件并更改其扩展名.例如,如何使用bash脚本执行此操作?到目前为止我还不知道.所有帮助apreciated!

Mat*_*Mat 8

for f in *.jpg ; do
  if [[ $(file -b --mime-type "$f") = image/png ]] ; then
    mv "$f" "${f/%.jpg/.png}"
  fi
done
Run Code Online (Sandbox Code Playgroud)

这将获取一个.jpg文件列表,然后为每个调用file它上面的实用程序来获取mime类型.如果是image/png,那么它使用字符串操作替换重命名文件.