コマンドでファイルの種類を識別できますfile。ファイルのデフォルトの (推奨される) 拡張子を取得できますか?
たとえば、
tmp_206.file: GIF image data, version 89a, 17 x 17
tmp_202.file: ASCII text, with very long lines, with no line terminators
それ.gifは.txt
拡張子が UNIX にとって重要でないことはわかっていますが、私にとっては重要です
一部のファイル タイプは、jpeg ファイルの jpe、jpeg、jpg など、複数の拡張子をサポートします。
できることは、最初に次を使用して MIME タイプを取得することです。
mimleType=$(awk -F';' 'NF>1{print $1}' < <(file -bi logo.jpeg))
次に、この awk を使用してファイル拡張子を取得します。
awk -v mt=$mimeType '$1==mt{print $2}' /Applications/MAMP/conf/apache/mime.types
出力:
jpeg
拡張機能のセットがかなり限られている場合、file出力から好みの拡張機能へのマッピングを作成することは難しくありません。
case $(file - <"$file") in
'-: GIF image'* ) ext=gif ;;
'-: ASCII text'* ) ext=txt ;;
# etc
esac