複数のファイル形式に基づいて拡張子を追加する

複数のファイル形式に基づいて拡張子を追加する

複数のファイルに拡張子を追加することについて多くの質問があることを知っています。しかし、それらのどれも私の仕事をすることはできません。

拡張子のない巨大な画像のリストがあります。ほとんどは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

おすすめ記事