Cocoa では、ファイルが実行可能なバイナリであるかどうかをどのようにテストしますか? 残念ながら、 [NSFileManager isExecutableFileAtPath:] はスクリプトとディレクトリに対しても true を返します。実行可能ビットが設定されているほとんどすべてのファイルは、私が望んでいるものではありません。
そのままの Cocoa で行うのが私の好みのアプローチですが、NSTask で簡単にラップできる Bash ソリューションで十分です。
Cocoa では、ファイルが実行可能なバイナリであるかどうかをどのようにテストしますか? 残念ながら、 [NSFileManager isExecutableFileAtPath:] はスクリプトとディレクトリに対しても true を返します。実行可能ビットが設定されているほとんどすべてのファイルは、私が望んでいるものではありません。
そのままの Cocoa で行うのが私の好みのアプローチですが、NSTask で簡単にラップできる Bash ソリューションで十分です。
ディレクトリはコードで簡単に除外できますが、何がバイナリで何がそうでないかを知るのは少し難しいです。事実上、唯一の方法はファイルを開いて読み取ることであり、これは自分で行う必要があることです。
ただし、主な問題は、何をバイナリと見なすかです。
最初に数十行のテキスト行がある実行可能ファイルを見たことがありますが (つまり、それらは実質的にスクリプトでした)、残りはバイナリでした。それらをどのように分類しますか?
ファイルがどのようにロードされているかによって分類しても問題ない場合はfile
、ファイルが何であるかをできる限り正確に伝えようとするコマンドを試すことができます。
Cocoa はわかりませんが、これは bash ソリューションです。
find ../ -type f -perm +111 | \
xargs -n 1 -I {} file "{}" | grep -v text | cut -d: -f1