如何在 Lisp 中确定文件类型

问题描述

在 shell 中是否有类似 file 之类的东西,用于 lisp 来确定文件类型?如果不是,你如何确定文件类型?

在大多数情况下,pathname-type 已经足够好,但有时您可能会遇到某些文件没有正确命名的情况。

解决方法

file 的功能在 libmagic 中可用:

从 Ian Darwin/Christos Zoulas 文件的 4.00 版开始,文件的功能被合并到一个 libmagic 库中,该库可通过 C(和 C 兼容)链接访问;[7][8]文件是使用该库实现的。

Wikipedia

还有一个针对 Common Lisp 的绑定。

我必须在我的系统上安装 libmagic-dev,然后:

CL-USER> (ql:quickload :magicffi)
... 
(:MAGICFFI)

CL-USER> (magicffi:pathname-mime #P"/bin/ls")
"application/x-sharedlib; charset=binary"

MAGICFFI