【发布时间】:2012-08-10 17:31:15
【问题描述】:
在 Cocoa 中,我将如何测试文件是否为可执行二进制文件?不幸的是,[NSFileManager isExecutableFileAtPath:] 也将为脚本和目录返回 true,几乎所有设置了可执行位的文件都不是我想要的。
虽然直接使用 Cocoa 是我的首选方法,但我可以轻松地将 Bash 解决方案封装在 NSTask 中就足够了。
【问题讨论】:
标签: cocoa bash testing executable
在 Cocoa 中,我将如何测试文件是否为可执行二进制文件?不幸的是,[NSFileManager isExecutableFileAtPath:] 也将为脚本和目录返回 true,几乎所有设置了可执行位的文件都不是我想要的。
虽然直接使用 Cocoa 是我的首选方法,但我可以轻松地将 Bash 解决方案封装在 NSTask 中就足够了。
【问题讨论】:
标签: cocoa bash testing executable
您可以在代码中轻松过滤掉的目录,但是知道什么是二进制文件,什么不是二进制文件有点困难,因为实际上,唯一的方法是打开文件并读取它,这是您需要自己做的事情.
然而,主要问题是应该将什么视为二进制文件。
我见过开头有十几个文本行的可执行文件(因此,实际上它们是脚本),但其余的都是二进制文件。你会如何对它们进行分类?
如果您可以根据加载方式对它们进行分类,您可以尝试使用命令file,它会尽可能准确地告诉您文件是什么。
【讨论】:
我不知道 Cocoa,但这是一个 bash 解决方案:
find ../ -type f -perm +111 | \
xargs -n 1 -I {} file "{}" | grep -v text | cut -d: -f1
【讨论】: