回答:
これにより、実行可能ビットが設定されたすべてのファイル(シンボリックリンクではない)が検索されます。
find . -perm +111 -type f
これにより、シンボリックリンクも検索されます(多くの場合、同様に重要です)。
find . -perm +111 -type f -or -type l
明らかでない場合のコマンドの動作は次のとおりです。
find
明らかにfindプログラム(:.
(.
=現在のディレクトリ)で検索を開始するディレクトリを参照します-perm +111
=実行可能ビットのいずれかが設定されている場合(+
「これらのビットのいずれか」を意味し111
、所有者、グループ、および誰でも実行可能ビットの8進数です)-type f
タイプがファイルであることを意味します-or
ブールOR-type l
タイプがシンボリックリンクであることを意味しますIanの解答(10.6.8)を作成することはできませんでしたが、次の結果は期待どおりの結果になりました。
find . -type f -perm +0111 -print
更新を編集
これもうまくいくようです!
find . -type f -perm +ugo+x -print
「x」は、ユーザー/グループ/その他の指定子がなければ意味がないと思います。
-perm [-|+]mode
The mode may be either symbolic (see chmod(1)) or an octal number. If the mode is symbolic, a
starting value of zero is assumed and the mode sets or clears permissions without regard to the
process' file mode creation mask. If the mode is octal, only bits 07777 (S_ISUID | S_ISGID |
S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) of the file's mode bits participate in the comparison.
If the mode is preceded by a dash (``-''), this primary evaluates to true if at least all of
the bits in the mode are set in the file's mode bits. If the mode is preceded by a plus
(``+''), this primary evaluates to true if any of the bits in the mode are set in the file's
mode bits. Otherwise, this primary evaluates to true if the bits in the mode exactly match the
file's mode bits. Note, the first character of a symbolic mode may not be a dash (``-'').
必要なもの:
find . -type f -perm +0111 -print
OS XはLinuxベースではなくBSDベースであるため、Linuxディストリビューション(find
そのうちの1つ)で慣れているGnuコマンドは、OS Xのものと必ずしも同じではないことに注意してください。シェルの違いは、オペレーティングシステムとオペレーティングシステムユーティリティツールの違いです。
非常に古い質問ですが、私は承知していますが、解決策を探してより良い答えを見つけたかもしれません。
「find」の使用に関する主な問題は、この属性が実行可能でないファイルに設定されている場合でも、実行可能に設定された属性に依存することです。
MacOSには、file
ファイル情報を表示する便利な小さなコマンドラインツール「」が付属しています。たとえば、
$> file *
Distribution: directory
SomeFile.icns: Mac OS X icon, 3272878 bytes, "ic09" type
MyPicture.png: PNG image data, 1024 x 1024, 8-bit/color RGBA, non-interlaced
NSHelpers.pas: Algol 68 source text, ASCII text
myProgram: Mach-O 64-bit executable x86_64
ご覧のとおり、「MyProgram」は実行可能ファイルであり、適切に示されています。古い32ビットの実行可能ファイルには「executable」というフレーズも含まれているため、以下にすべての実際の実行可能ファイル(バイナリ)をリストする必要があります。
file * | grep "executable"
これが同じ質問への回答を探している人にも役立つことを願っています。
注:file
サブディレクトリを再帰する機能はないようです。
-L
代わりに-or -type l
を使用して、リンク自体ではなく、リンク先のファイルの統計情報を返すためのstat
呼び出しを発生させることができfind
ます。