2

特定のディレクトリ (DIR) とそのすべてのサブディレクトリを検索して、特定の を含む jar ファイルのリストを見つけたいと考えています。

以下のコマンドを試しました。しかし、CLASS FILE 名を含むすべてのクラスが提供されました。
例: クラスが の場合Message.class、次のコマンド出力もHttpMessage.class同様のクラスを出力します。

find <DIR> -name '*.jar' | while read F; do (echo $F; jar -tvf $F | grep <class>) done - prints the jar name if the class exists then prints the class name.
4

4 に答える 4

9

を使用grepすると、一致する jar を見つけることができますが、クラスの名前空間を一覧表示することはできません。

find以下のコマンドとコマンドを組み合わせると、パッケージ名jar ファイル名jarを含むクラスが出力されます。

find . -type f -name '*.jar' -print0 |  xargs -0 -I '{}' sh -c 'jar tf {} | grep Message.class &&  echo {}'

以下のようにパッケージ名で検索することもできます。

find . -type f -name '*.jar' -print0 |  xargs -0 -I '{}' sh -c 'jar tf {} | grep com/mypackage/Message.class &&  echo {}'
于 2013-10-09T01:34:34.147 に答える
1

grep で正規表現を使用して、正確な一致基準を指定できます。行を/Message.classで終わらせたい場合は、次のようにすることができます。

grep '/Message.class$'

于 2013-02-19T08:26:41.247 に答える