Linux cmd 在 jar 中搜索类文件,而不考虑 jar 路径

标签 linux command

我想在许多 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 所说,您也可以使用命令locatelocate 使用索引搜索文件,这样会更快。但命令应该是:

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 cmd 在 jar 中搜索类文件,而不考虑 jar 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373788/

相关文章:

linux - Fork 系统调用失败后 rax 中的返回值是多少?

python - 在Django中制作自定义管理命令时 "_private.py"文件的用途是什么?

wpf - 当组合框位于 ListView 单元格中时如何通过委托(delegate)命令处理 SelectionChanged 事件

java - ULIMIT:如何永久设置限制

linux - "CIFS VFS: cifs_mount failed w/return code = -22"和 "wrong fs type, bad option, bad superblock"

linux - 在 linux 上为 opencart 设置虚拟主机/多个商店

linux - Wordpress Linux 文件权限和组

linux - 如何使用 grep 和字符串在多个文件中搜索单个单词或短语?

linux - Unix 命令 "uniq"和 "sort"

c - 在异常处理程序中创建的 Linux 内核线程停止