UNIX 트리 결과와 각 트리 노드를 재귀적으로 grep하는 방법은 무엇입니까?

UNIX 트리 결과와 각 트리 노드를 재귀적으로 grep하는 방법은 무엇입니까?

이게 내가 한 일이야

tree -R /Applications/NetBeans/NetBeans\ 7.0.app/ | perl -e 'while (<>) { print if /java$/ }'

그러나 물론 이것은 내가 원하는 결과를 반환하지 않습니다.

내가 원하는 것은실행 가능한 자바 파일그리고 해당 Java 파일이 어디에 있는지 알 수 있는 재귀 디렉터리입니다. 다음과 같은 구조

`-- Contents
    `-- Resources
        `-- NetBeans
            `-- ExecutableJavaEnv
                `-- java

이 질문은 SU에 대한 내 질문에서 영감을 얻었습니다.. 내가 사용할 수 있을지 확신할 수 없기 때문에 위에 표시된 구조는 실제로 중요하지 않습니다 find.경로 가져오기/usr/bin/java이를 통해 Mac OS X 10.5.8에서 실행하는 대신 NetBeans Java를 실행하도록 TextMate를 설정할 수 있습니다 . 제안? 돕다?

첫 번째 편집:

지금까지 답변해 주셔서 감사합니다. 이것은 내가 시도한 명령의 결과입니다.

. find /Applications/NetBeans/NetBeans\ 7.0.app/ -name java
/Applications/NetBeans/NetBeans 7.0.app//Contents/Resources/NetBeans/java
. ll /Applications/NetBeans/NetBeans\ 7.0.app/Contents/Resources/NetBeans/
total 632
-rw-rw-r--   1 arie  admin   6.6K Apr  8 09:29 CREDITS.html
-rw-rw-r--   1 arie  admin   1.7K Apr  8 09:29 DISTRIBUTION.txt
-rw-rw-r--   1 arie  admin   2.1K Apr  8 09:30 LEGALNOTICE.txt
-rw-rw-r--   1 arie  admin    78K Apr  8 09:30 LICENSE.txt
-rw-rw-r--   1 arie  admin   5.4K Apr  8 09:30 README.html
-rw-rw-r--   1 arie  admin   158K Apr  8 09:30 THIRDPARTYLICENSE.txt
drwxrwxr-x   8 arie  admin   272B Apr  8 09:29 apisupport/
drwxrwxr-x   3 arie  admin   102B Apr  8 10:32 bin/
drwxrwxr-x   9 arie  admin   306B Jul  1 15:56 cnd/
drwxrwxr-x   9 arie  admin   306B Apr  8 09:29 dlight/
drwxrwxr-x   9 arie  admin   306B Apr  8 09:30 enterprise/
drwxrwxr-x   6 arie  admin   204B Apr  8 09:30 ergonomics/
drwxrwxr-x   6 arie  admin   204B Jun 11 22:17 etc/
drwxrwxr-x   7 arie  admin   238B Apr  8 09:30 groovy/
drwxrwxr-x  21 arie  admin   714B Jun 11 22:15 harness/
drwxrwxr-x  11 arie  admin   374B Jun 11 22:25 ide/
drwxrwxr-x  12 arie  admin   408B Jul  1 15:56 java/
drwxrwxr-x  10 arie  admin   340B Apr  8 10:15 mobility/
-rw-rw-r--   1 arie  admin    33K Apr  8 09:30 moduleCluster.properties
drwxrwxr-x  15 arie  admin   510B Jun 11 22:17 nb/
-rw-rw-r--   1 arie  admin    15K Apr  8 09:30 netbeans.css
drwxrwxr-x  11 arie  admin   374B Apr  8 09:30 php/
drwxrwxr-x  11 arie  admin   374B Jun 11 22:25 platform/
drwxrwxr-x  10 arie  admin   340B Apr  8 09:30 profiler/
drwxrwxr-x   3 arie  admin   102B Apr  8 08:43 ruby/
drwxrwxr-x   7 arie  admin   238B Apr  8 09:30 websvccommon/
. 

또 다른 대답은 이것이다

. find /Applications/NetBeans/NetBeans\ 7.0.app -type f -executable -name java
find: -executable: unknown option

답변1

java지정된 디렉터리에서 호출된 실행 파일을 찾습니다 .

find '/Applications/NetBeans/NetBeans 7.0.app/' -name java -type f -perm -u+x

출력은 한 줄에 하나의 파일 이름이 됩니다.

/Applications/NetBeans/NetBeans 7.0.app/Contents/Resources/NetBeans/ExecutableJavaEnv/java

해당 부분을 생략하려면 …/NetBeans 7.0.app먼저 디렉터리를 변경하고 find현재 디렉터리( .)에서 실행하세요. 여전히 ./접두사가 있습니다.

cd '/Applications/NetBeans/NetBeans 7.0.app/'
find . -name java -type f -perm -u+x

엄밀히 말하면 -perm u+x실행할 수 있는 모든 파일이 아니라 소유자가 실행 가능한 모든 파일을 선택합니다. GNU find에는 -executable모든 파일 모드와 ACL을 고려하여 실행 권한이 있는 파일을 찾는 옵션이 있지만 이 옵션은 다른 시스템(예: OSX)에서는 사용할 수 없습니다. 사실 그것은 별로 중요하지 않습니다. 실제로 사용 사례에서는 권한을 완전히 잊어버리고 -name java -type f.

-type f디렉토리나 심볼릭 링크가 아닌 일반 파일만 선택합니다. 검색에 일반 파일에 대한 기호 링크를 포함하려면 이 -L옵션을 추가하십시오 find(명령 바로 뒤 find, 검색할 디렉터리 이름 앞에).

답변2

나는 이것이 당신이 원하는 것이라고 생각합니다 :

find /Applications/NetBeans/NetBeans\ 7.0.app -type f -executable -name java

답변3

find :를 사용하면 쉽게 할 수 있을 것 같습니다 find /path/ -name java. (왜 아직 시도하지 않았습니까?)

관련 정보