find命令exec执行由管道连接的多个命令(搜索jar包)

$ find . -type f -name '*.jar' -exec jar -tf {} ; | grep -i Stereotype

这样可以判断一个目录下的jar文件是否包含指定的包或类,但是没有打印jar文件名,而且这种方式也不可能打印出jar文件名,因为管道后的grep命令只和标准输入打交道。

find . -name '*.jar' -type f -exec bash -c 'jar -tf {}|grep -iH --label {} TailDir' \;

用bash执行而不用eval是因为eval是shell内置命令。