这就是我所做的
tree -R /Applications/NetBeans/NetBeans\ 7.0.app/ | perl -e 'while (<>) { print if /java$/ }'
但这当然不会返回我想要的结果。
我想要的是显示一个可执行的java文件及其递归目录,以便我知道该 java 文件在哪里。像下面这样的结构
`-- Contents
`-- Resources
`-- NetBeans
`-- ExecutableJavaEnv
`-- java
这个问题的灵感来自于我在SU上的问题。上面的结构显示实际上并不重要,因为我不确定我是否可以使用find
.我需要的只是获取路径这样我就可以将 TextMate 设置为运行 NetBeans 的 Java,而不是/usr/bin/java
从 Mac OS X 10.5.8 运行。建议?帮助?
第一次编辑:
感谢您到目前为止的回答,我对此表示感谢。这是我尝试的命令的结果:
. 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)上不可用。实际上,这不太重要。事实上,对于您的用例,您可以完全忘记权限并只需 match -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
。 (为什么你没有尝试过)。