Ari*_*rie 3 find executable files
这是我所做的
tree -R /Applications/NetBeans/NetBeans\ 7.0.app/ | perl -e 'while (<>) { print if /java$/ }'
Run Code Online (Sandbox Code Playgroud)
但这当然不会返回我想要的结果。
我想要的是显示一个可执行的 java 文件及其递归目录,以便我知道该 java 文件在哪里。像下面这样的结构
`-- Contents
`-- Resources
`-- NetBeans
`-- ExecutableJavaEnv
`-- java
Run Code Online (Sandbox Code Playgroud)
这个问题的灵感来自我关于 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/
.
Run Code Online (Sandbox Code Playgroud)
另一个答案是这个
. find /Applications/NetBeans/NetBeans\ 7.0.app -type f -executable -name java
find: -executable: unknown option
Run Code Online (Sandbox Code Playgroud)
查找java
指定目录下调用的可执行文件:
find '/Applications/NetBeans/NetBeans 7.0.app/' -name java -type f -perm -u+x
Run Code Online (Sandbox Code Playgroud)
输出将是每行一个文件名,例如
/Applications/NetBeans/NetBeans 7.0.app/Contents/Resources/NetBeans/ExecutableJavaEnv/java
Run Code Online (Sandbox Code Playgroud)
如果要省略…/NetBeans 7.0.app
部分,请先切换到目录并find
在当前目录(.
)上运行。仍然会有一个./
前缀。
cd '/Applications/NetBeans/NetBeans 7.0.app/'
find . -name java -type f -perm -u+x
Run Code Online (Sandbox Code Playgroud)
严格来说,-perm u+x
选择所有可由其所有者执行的文件,而不是您可以执行的所有文件。GNU find 有一个-executable
选项来查找您具有执行权限的文件,考虑所有文件模式和 ACL,但此选项在其他系统(如 OSX)上不可用。实际上,这不太重要。事实上,对于您的用例,您可以完全忘记权限而只匹配-name java -type f
.
-type f
仅选择常规文件,而不选择目录或符号链接。如果要在搜索中包含到常规文件的符号链接,请添加-L
选项find
(紧接在find
命令之后,要搜索的目录名称之前)。
归档时间: |
|
查看次数: |
494 次 |
最近记录: |