Com o GNU grep
:
find . -type f -name '*.jar' -exec sh -c '
for file do
jar tf "$file" | grep -H --label="$file" myClass
done' sh {} +
Ou use o awk, por exemplo:
find . -type f -name '*.jar' -exec sh -c '
export FILE
for FILE do
jar tf "$FILE" | awk '\''/myClass/ {
print ENVIRON["FILE"] ": " $0}'\''
done' sh {} +
Você também pode usar bsdtar
(como jar
arquivos são zip
arquivos e bsdtar
os suporta) para fazer a correspondência sozinho (permitindo que você tenha uma saída mais detalhada com metadados de arquivos sem correr o risco de grep
correspondente a esses metadados), embora você ainda precisasse de algo como grep
para inserir o nome do arquivo:
find . -type f -name '*.jar' -exec sh -c '
for file do
bsdtar tvf "$file" "*myClass*" | grep -H --label="$file" "^"
done' sh {} +