複数のファイルに拡張子を追加することについて多くの質問があることを知っています。しかし、それらのどれも私の仕事をすることはできません。
拡張子のない巨大な画像のリストがあります。ほとんどは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