0

我正在使用 shell 脚本从 UNIX 中使用 bash 脚本的 JAR 文件列表中找出包含类文件的文件:

find . -name "*.jar" -exec bash -c 'jar -tf {} |grep -H --label {} GenericClassLoader' \;

但我收到错误:

java.util.zip.ZipException: error in opening zip file
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:131)
        at java.util.zip.ZipFile.<init>(ZipFile.java:92)
        at sun.tools.jar.Main.list(Main.java:997)
        at sun.tools.jar.Main.run(Main.java:242)
        at sun.tools.jar.Main.main(Main.java:1167)

我正在从这篇文章中获得帮助:Find for a class file in Linux that is present in JAR

为了避免错误,我将查询修改为:

find . -name "*.jar" -exec bash -c 'jar -tf {} 2>&/dev/null |grep -H --label {} GenericClassLoader' \;

但我开始出现以下错误:

bash: /dev/null: ambiguous redirect

请帮我解决这个问题,我的命令有什么问题。

4

1 回答 1

2

这是因为您编写的重定向,您应该重定向2> /dev/null到发送stderr/dev/null(假设这是您想要的)。

另请注意,您没有修复错误,您只是阻止它可见。

有关更多详细信息,请参见此处:http ://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

于 2013-05-03T16:16:03.250 回答