특정 이름에 대한 jar 파일을 grep하는 가장 빠른 방법은 무엇입니까?

특정 이름에 대한 jar 파일을 grep하는 가장 빠른 방법은 무엇입니까?

spring나는 그 이름에 들어 있는 모든 항아리를 찾으려고 노력하고 있습니다 . 저는 Windows로 작업하고 cygwin을 사용하여 Linux 명령을 실행하고 있습니다. 아래 명령이 올바르게 보입니까?

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

어떤 이유로 아직 처리 중이며 화면에 결과가 표시되지 않습니다. 특정 이름의 jar 파일을 grep하는 빠른 방법이 있습니까?

예를 들어, 다음은 spring이 포함된 유효한 jar 파일입니다.

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

답변1

나는 명령이 인수를 통해 jar여러 파일을 허용한다고 믿지 않으므로 AFAIK에서 모든 파일을 처리하는 단일 호출은 불가능합니다. 각 파일에 대해 하나의 exec 호출을 방지하여 작업 속도를 높이는 한 가지 옵션 은 다음과 같습니다..jarjar.jarfind.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. 먼저 이름이 springtest.
  2. 이제 파일 에 대해 명령 class을 실행하여 파일을 생성합니다 .javajava
  3. 이제 jar 명령을 실행하여 jar 파일에 추가합니다.
  4. class이제 명령을 실행하면 찾고 있는 jar 파일이 아닌 파일이 반환됩니다 .

     [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
    

관련 정보