UNIXツリーの結果と各ツリーノードを再帰的にgrepする方法は?

UNIXツリーの結果と各ツリーノードを再帰的にgrepする方法は?

これは私がしたことです。

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

しかし、もちろん、これは私が望む結果を返しません。

私が望むもの実行可能な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

出力は1行に1つのファイル名になります。

/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、検索するディレクトリ名の前に)。

おすすめ記事