gpt4 book ai didi

linux - 在 Linux 中检查文件类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:40 26 4
gpt4 key购买 nike

我想检查某些文件并查看它们的类型和扩展名是否匹配。我目前正在做的是使用 file 命令检查 mime 类型(或 file 的基本输出)并将其与文件扩展名进行比较。但是,某些文件类型会返回相同的 mime 类型,例如 .sfx.dll

还有一些文件没有扩展名,我应该能够正确确定它们的文件类型。

我希望能够正确获取所有文件类型,但我目前感兴趣的最重要的文件类型是;

  • 动态链接库
  • 微星
  • com
  • cpl
  • 执行
  • ocx
  • tmp
  • 更新

是否有任何其他工具可以检查并返回文件类型?

编辑

我写了一个可以用作 linux 命令的 nodejs 脚本。我通过合并公共(public)数据库创建了自己的文件签名数据库,每个文件扩展名的格式如下;

"ISO" : [
{
"signature": "4344303031", // byte sequence
"size": 5, // size of byte sequence
"offset": 32769 // offset in the file for the signature bytes
},
{
"signature": "4344303031",
"size": 5,
"offset": 34817
},
{
"signature": "4344303031",
"size": 5,
"offset": 36865
}
]

现在;我首先检查文件名中可用扩展名的签名字节(text.iso 将生成 .iso),然后我检查该文件的签名字节以查看它是否真的是 iso 文件。如果确实是 iso,我返回 iso 作为结果。

如果不是 iso,我会针对给定的文件检查数据库中每个扩展名的所有签名字节序​​列,看看它们是否匹配。如果有匹配项,我会返回结果。

如果找不到匹配项,我会执行 file 命令,获取文件的 mime 类型,并使用我创建的另一个数据库来匹配带有扩展名的 mime 类型,看看它是否有匹配。 mime-type db的格式是这样的;

"application/atom+xml": [
"atom",
"xml"
],
"application/atomcat+xml": [
"atomcat"
],
"application/atomsvc+xml": [
"atomsvc"
]

此解决方案目前满足我的项目需求。也许这对其他人也有帮助。

最佳答案

pip install filemagic 之后使用 Python:

>>> import magic
>>> with magic.Magic() as m: m.id_filename('tmp.py')
...
'Python script, ASCII text executable'
>>> with magic.Magic() as m: m.id_filename('test.html')
...
'HTML document, ASCII text'

关于linux - 在 Linux 中检查文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com