我希望有人能向我解释如何更改文件类型。我最近将照片上传到笔记本电脑上,其中一半保存为文件而不是图像,这意味着我无法将它们上传到网站上进行打印。
我正在寻找分步流程,以及我是否可以同时完成所有操作或单独完成它们。我有 500 多个要更改。
答案1
您应该能够使用该mimetype
实用程序 - 来自man mimetype
:
NAME
mimetype - Determine file type
SYNOPSIS
mimetype [options] [-] files
DESCRIPTION
This script tries to determine the mime type of a file using the Shared
MIME-info database. It is intended as a kind of file(1) work-alike, but
uses mimetypes instead of descriptions.
例如:
$ mimetype somefile
somefile: image/jpeg
但是,默认情况下,mimetype
如果存在扩展,则会“相信”该扩展 - 因此:
$ cp somefile somefile.gif
$ mimetype somefile.gif
somefile.gif: image/gif
你可以告诉它只使用文件的魔法字节通过添加开关来进行测定-M
:
$ mimetype -M somefile.gif
somefile.gif: image/jpeg
您还可以添加-b
描述brief
:
$ mimetype -bM somefile.gif
image/jpeg
如果你想脚本重命名,我建议如下:
#!/bin/bash
while read -r -d '' f; do
mt="$(mimetype -bM "$f")"
ext="${mt##*/}"
case "$ext" in
jpeg|gif|png)
echo mv -v "$f" "$f.$ext"
;;
*)
echo "skipping mimetype $mt... "
;;
esac
done < <(find -type f -print0)
笔记:
- 它实际上并没有重命名任何内容:
echo mv
只是输出它所会请检查并再次检查它是否按预期运行你的删除之前的文件echo
- 它仅对 、 和 文件进行操作
jpeg
:gif
如果png
还有其他图像类型,则需要明确添加这些类型 - 它将重命名(添加额外的扩展名)任何它认为具有错误的基于魔法字节的扩展
可能还有其他更简单的选项,例如使用exiftool