Bash,获取文件句柄的MIME类型

3

如何在不将文件保存到磁盘的情况下获取文件句柄的 MIME 类型?

我的意思是,这是一个没有保存到磁盘的文件,而是从存档中提取出来并计划将其传输到另一个脚本。

假设我是这样提取文件的:

tar -xOzf images.tar.gz images/logo.jpg | myscript

现在,在我的脚本中,我想在进一步处理文件之前检查文件的MIME类型。它应该如何进行?


1
读取管道输入前面足够的数据以进行测试,然后将这些数据(以及其余的管道数据)馈入您要执行的下一个处理步骤中。 - Etan Reisner
4
我不知道你想要实现什么目标。也许是即时的文件/媒体类型验证?这个 file 命令可能会有所帮助:cat my_on_the_fly_file | file -b --mime-type -。它可以在运行时确定文件的媒体类型。 - Marc Bredt
Marc,不要害羞。将此作为答案发布。 tar -xOzf images.tar.gz images/logo.jpg | file - b - - mime type - - dovidweisz
1个回答

5

有些人认为我上面的评论很有帮助,所以我把它发表成一个答案。 file命令能够在运行时/被处理时确定文件的MIME类型。它能够从stdin中读取文件-,在传递-b参数时简要地/简洁地打印文件的--mime-type。考虑到你的例子,你可能想从存档中提取单个文件并确定其文件/MIME类型。

$ tar -xOzf foo.tar.gz file_in_archive.txt | file -b --mime-type -
text/plain

所以,对于从存档中提取到标准输出的简单文本文件,它可能看起来像上面的例子。希望这有所帮助。问候。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接