답변:
실행 가능한 비트가 설정된 모든 파일 (심볼릭 링크 아님)을 찾습니다.
find . -perm +111 -type f
이것은 또한 심볼릭 링크 를 찾을 것입니다 (종종 똑같이 중요합니다)
find . -perm +111 -type f -or -type l
명확하지 않은 경우 명령이 작동하는 방법은 다음과 같습니다.
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 배포판에서 사용되는 Gnu 명령 은 OS X의 명령 find
과 반드시 같을 필요는 없습니다. 셸 차이는 운영 체제 / 운영 체제 유틸리티 도구의 차이입니다.
아주 오래된 질문입니다. 알고 있지만 솔루션을 검색하면 더 나은 답변을 찾을 수 있습니다.
"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 비트 실행 파일에도 "실행 가능"이라는 문구가 있으므로 다음은 모든 실제 실행 파일 (바이너리)을 나열해야합니다.
file * | grep "executable"
이것이 동일한 질문에 대한 답변을 찾는 누군가에게 유용 할 수 있기를 바랍니다.
참고 : file
하위 디렉토리를 통해 재귀하는 기능이없는 것 같습니다.
-L
대신 호출로-or -type l
인해 링크 자체가 아닌 링크 된 파일의 통계를 반환하도록 할 수 있습니다 .stat
find