
나는 bash 쉘을 사용하고 있습니다. 다양한 수준의 디렉토리에 JAR 파일 세트가 있습니다.
> find . -name "*.jar"
/tmp/jars/META-INF/lib/jackson-datatype-jdk8.jar
/tmp/jars/lib/my-custom.jar
...
이러한 JAR 파일에 "test-*.properties"와 일치하는 파일 이름을 가진 속성 파일이 포함되어 있는지 확인하고 싶습니다. 각 JAR 파일의 압축을 풀고 해당 내용을 검색하고 싶지 않습니다. 이 정보를 알아낼 수 있는 방법이 있나요?
답변1
아카이브 내부의 일부 조작이 필요하지만, 예를 들어 unzip -l
모든 파일을 추출하는 대신 archive list 명령을 사용하여 수행할 수 있습니다.
find . -name \*.jar -exec sh -c \
'jar --list --file={} | grep -q '\''test-.*\.properties'\'' && printf "%s\n" {}' \;
어쩌면 unzip -l
더 빠르지만 구문 분석하기가 더 어려울까요? jar
디스크에서 제거하는 것이 더 느린 것 같습니다.