Как grep рекурсивные результаты дерева UNIX вместе с каждым узлом дерева?

Вот что я делаю

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

но, конечно, это не возвращает результат, который я хочу.

Я хочу показать исполняемый Java-файл вместе с его рекурсивным каталогом, чтобы я знал, где находится этот Java-файл. Что-то вроде этой структуры ниже

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

Этот вопрос вдохновлен моим вопросом о SU . Дисплей структуры выше на самом деле не очень важен, потому что я не уверен, могу ли я получить то, что хочу, используя find . Мне нужно только получить путь, чтобы я мог настроить TextMate на запуск Java-среды NetBeans вместо /usr/bin/java из моей Mac OS X 10.5.8. Совет? Помогите?

1st Edit:

Спасибо за ответы, я ценю это. Вот результат команды, которую я пробовал:

 . 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 

Чтобы найти исполняемые файлы с именем 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 , перед именем поиска в каталоге).

Я думаю, это то, что вы хотите:

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

Кажется, это легко сделать с помощью find: find /path/ -name java . (Почему вы не попробовали).