我知道有关向多个文件添加扩展名存在很多问题。但他们都无法完成我的工作。
我有一个巨大的没有扩展名的图像列表,其中大多数是 png,但也有 jpg 文件,也许还有 tiff。
我怎样才能正确地重命名它们?
答案1
也许像这样:
for f in /some/dir/*; do
type="$( file -bi -- "$f" )"
case "${type%%;*}" in
image/jpeg) ext=jpg ;;
image/png) ext=png ;;
image/tiff) ext=tiff ;;
*) printf '%s: %s: unknown file type\n' "${0##*/}" "$f" >&2; ext='' ;;
esac
if [ -n "$ext" ]; then mv -n -- "$f" "${f}.${ext}"; fi
done
答案2
另一种方式exiftool
:
exiftool -r -ext '' '-filename<$filename.$filetype' .
这将以递归方式将当前目录下所有不带扩展名的r
图像文件重命名.
为,,等等。filename.TYPE
TYPE
JPEG
PNG
TIFF
或者,仅重命名没有扩展名的 JPEG/PNG/TIFF 类型的文件:
exiftool -if '$filetype eq "JPEG"' -filename=%f.jpg \
-execute -if '$filetype eq "PNG"' -filename=%f.png \
-execute -if '$filetype eq "TIFF"' -filename=%f.tiff \
-common_args -r -ext '' .
答案3
不确定这是否回答了您的问题,但如果您想知道哪种图像类型(PNG、JPEG 等)是特定文件,您可以使用以下命令file
:
file myimage.xxx
myimage.xxx: PNG image data, 837 x 814, 8-bit/color RGB, non-interlaced