查找包含 Main 的 Jar:Shell 脚本

Finding a Jar that contains Main: Shell Scripting

我想编写一个 shell 脚本来帮助我找到包含 Main 的 jar。 我一直在想:

find . -name "*.jar" | jar -tvf | grep Main

这似乎是不正确的,因为 jar -tvf 一次接受一个输入,而管道一次创建完整的输出。是否有可能使管道串行工作?

如果您使用的是 bash,则可以通过进程替换来使用此脚本:

while IFS= read -d '' -r file; do
   if jar -tf "$file" | grep -q 'Main'; then
      echo "$file has Main"
      break
   fi
done < <(find . -name "*.jar" -print0)

非bash使用:

find . -name "*.jar" -print0 |
while IFS= read -d '' -r file; do
   if jar -tf "$file" | grep -q 'Main'; then
      echo "$file has Main"
      break
   fi
done