jarファイルで特定の名前を見つける最も速い方法は何ですか?

jarファイルで特定の名前を見つける最も速い方法は何ですか?

spring私はその名前を含むすべての瓶を見つけようとしています。私はWindowsを使用しており、cygwinを使用してLinuxコマンドを実行しています。以下のコマンドが正しいと思いますか?

find . -name "*.jar" -exec jar tf '{}' \| grep -H "spring" \;

何らかの理由でまだ処理中であり、結果はまだ画面に表示されません。特定の名前のjarファイルをすばやく見つける方法はありますか?

たとえば、以下はspringを含む有効なjarファイルです。

spring-web.jar
spring-core.jar
test-spring.jar 

答え1

jar私はこのコマンドがパラメータを介して複数の.jarファイルを受け入れるとは思わないので、私が知っている限り、一度の呼び出しでファイルをすべてjar処理する.jarことは不可能です。findファイルごとに1回のexec呼び出しを防止して作業を高速化する1つのオプション.jarは次のとおりです。

find . -name '*.jar' -exec sh -c \
'for f; do  jar -tf "$f" | grep --label="$f" "spring"; done' sh {} +

答え2

次のコマンドは、部分文字列を含むjarファイルを探しますspring

find /some/dir -type f -name "*spring*.jar"

元のコマンドは、周囲のテキストや例とは異なる内容を調べます。

find . -name "*.jar" -exec jar tf '{}' \| grep -H "spring" \;

見つけてくださいこれGillesは、上記のコマンドが探しているコマンドのチャットの説明ではない理由を説明しています。

テスト

[root@keithpc check]# cd jar_check/
[root@keithpc jar_check]# ls
[root@keithpc jar_check]# touch spring1.jar
[root@keithpc jar_check]# touch 1spring.jar
[root@keithpc jar_check]# touch no_sss_spring.jar
[root@keithpc jar_check]# touch spring.txt

出力:

[root@keithpc jar_check]# find ./ -type f -name "*spring*.jar"
./no_sss_spring.jar
./1spring.jar
./spring1.jar

ご覧のとおり、ファイルspring.txtは返されません。私はこれがあなたが探しているものだと思います。

今コマンドが何をしているのか理解するには

  1. まず、.javaというファイルを作成しましたspringtest
  2. 次に、ファイルに classコマンドを実行してファイルを作成します。javajava
  3. jarコマンドを実行してjarファイルに追加しました。
  4. コマンドを実行すると、classjarファイルの代わりに探しているファイルが返されます。

     [root@keithpc jar_check1]# javac springtest.java
     [root@keithpc jar_check1]# java springtest
     Hello,spring
     [root@keithpc jar_check1]# jar cvf springtest.jar springtest.class
     added manifest
     adding: springtest.class(in = 426) (out= 286)(deflated 32%)
    
     ##Here I run your command after creating the jar file. 
    
     [root@keithpc jar_check1]# find . -name "*.jar" -exec jar tf '{}' \| 
     grep -H "spring" \;
     ##As you can see, it returns me the class file rather than the 
     jar file as the output.  
    
     springtest.class
    

関連情報