给定一个 mime-type 获取对应的文件扩展名

Tyi*_*ilo 4 filenames mime-types curl

我想将文件下载curl到具有适当扩展名的临时目录。

目前我做这样的事情:

tmp="$(mktemp -t 'curl')"
curl -o "$tmp" http://example.com/generate_image.php?id=44
file -b --mime-type "$tmp"
Run Code Online (Sandbox Code Playgroud)

这将打印下载文件的 MIME 类型,但如何将这些映射到扩展名?

正如你所看到的,我不能只提取 url 的“扩展名”,因为那会给出.php而不是.png.

我知道 mime 类型和文件扩展名之间没有一对一的映射,但它应该处理普通的文件扩展名。

Dra*_*oan 6

与 windows 不同,unix 通常没有file extensions. 但是,您可以使用该/etc/mime.types文件来提供这些翻译:

image/jpeg: jpg
image/gif: gif
image/png: png
image/x-portable-pixmap: ppm
image/tiff: tif
Run Code Online (Sandbox Code Playgroud)

然后按扩展名匹配:

$ ext=$(grep "$(file -b --mime-type file.png)" /etc/mime.types | awk '{print $2}')

$ echo $ext
png
Run Code Online (Sandbox Code Playgroud)