我想在许多jar文件中搜索一个特定的类文件,而不给出每个jar文件的位置.

用一个简单的命令就可以了吗?

我试过这个命令:

grep Hello.class *.jar

它没有返回包含该类的JAR列表.然后我运行命令:

grep Hello.class /full/path/of/jar/file/*.jar

它确实返回了相关的jar文件.有更好的办法吗?

推荐答案

你的jar文件在哪里?有没有找到它们所在位置的模式?

1.它们都在一个目录中吗?

例如,foo/a/a.jarfoo/b/b.jar都在文件夹foo/下,在本例中,您可以使用findgrep:

find foo/ -name "*.jar" | xargs grep Hello.class

当然,至少可以在根目录/下搜索它们,但速度会很慢.

正如@loganaayahee所说,你也可以使用命令locate.locate用索引搜索文件,这样会更快.但命令应该是:

locate "*.jar" | xargs grep Hello.class

因为你想搜索jar文件的内容.

2.路径是否存储在环境变量中?

通常,Java会将查找jar文件的路径存储在环境变量CLASS_PATH中,我不知道这是否是您想要的.但是如果你的变量是这样的:CLASS_PATH=/lib:/usr/lib:/bin,它使用:来分隔路径,那么你可以使用这个命令来搜索类:

for P in `echo $CLASS_PATH | sed 's/:/ /g'`; do grep Hello.calss $P/*.jar; done

Linux相关问答推荐

如何将参数传递给Bash函数

Azure Linux B1s VM-Jenkins Sever已安装,但主页未打开

在树莓派内核中找不到arch/arm/kernel/calls.S

如何调试tokio任务挂起的位置?

Linux TTY 操作顺序

BASH:在curl输出的每一行添加前缀

如何在Linux下使用正则表达式更改文件名

如何修复 script(1) 实用程序输出的换行符?

为什么 linux shell diff 命令有时会显示与空行相关的输出,即使存在 -B(--ignore-blank-lines)选项?

ln命令报错target not a directory

为什么我的 Docker 进程不断在我的 Raspberry Pi 上重新启动?

获取变量中的当前路径并使用它

具体来说,fork() 如何处理 Linux 中 malloc() 动态分配的内存?

diff 命令仅获取不同行的数量

如何下载较旧的 google play 服务?

如何从命令行打开 Ubuntu Linux 上的 AVD 管理器?

Docker Bash 提示不显示 colored颜色 输出

如何在 linux 或 unix 上找到用户的主目录?

UNIX `time` 命令对于基准测试是否足够准确?

如何停止 Linux 上的不间断进程?