0

在 Cocoa 中,我将如何测试文件是否是可执行二进制文件?不幸的是,[NSFileManager isExecutableFileAtPath:] 也将为脚本和目录返回 true,几乎所有设置了可执行位的文件都不是我想要的。

虽然直接使用 Cocoa 是我的首选方法,但我可以轻松地将其包装在 NSTask 中的 Bash 解决方案就足够了。

4

2 回答 2

1

我不知道 Cocoa,但这是一个 bash 解决方案:

find ../ -type f -perm +111 | \
  xargs -n 1 -I {} file "{}" | grep -v text | cut -d: -f1
于 2012-08-10T17:50:58.177 回答
1

您可以在代码中轻松过滤掉目录,但是知道什么是二进制文件和什么不是二进制文件有点困难,因为实际上,唯一的方法是打开文件并读取它,这是您需要自己做的事情。

然而,主要问题是什么应该被视为二进制文件。

我见过开头有十几个文本行的可执行文件(因此,实际上它们是脚本),但其余的都是二进制文件。你会如何对它们进行分类?

如果您可以根据加载方式对它们进行分类,您可以尝试file尝试尽可能准确地告诉您文件是什么的命令。

于 2012-08-10T17:52:05.717 回答