일부 클래스를 찾고 싶은 여러 jar 디렉토리가 있습니다. 다음 명령을 사용하여 클래스가 있는지 확인하는 솔루션을 찾았습니다.
find -name "*.jar" | xargs -n 1 jar tf | grep 'myClass'
문제는 그것이 어디에 있는지 볼 수 없다는 jar
것입니다.
터미널에 파일 이름을 표시하는 솔루션을 찾고 있습니다. 내 현재 출력은 다음과 같습니다.
[user@server lib]$ find -name "*.jar" | xargs -n 1 jar tf | grep 'RollOn'
com/ventyx/utils/logutils/rolling/RollOnDemandAppender.class
어떤 제안?
GNU 사용 grep
:
find . -type f -name '*.jar' -exec sh -c '
for file do
jar tf "$file" | grep -H --label="$file" myClass
done' sh {} +
또는 예를 들어 awk를 사용하십시오.
find . -type f -name '*.jar' -exec sh -c '
export FILE
for FILE do
jar tf "$FILE" | awk '\''/myClass/ {
print ENVIRON["FILE"] ": " $0}'\''
done' sh {} +
또한 bsdtar
( jar
파일이 zip
파일이고 bsdtar
지원하므로) 자체적으로 일치를 수행하기 위해 사용할 수 있습니다 ( grep
해당 메타 데이터 에서 일치 의 위험을 실행하지 않고 파일 메타 데이터로 더 자세한 출력을 얻을 수 있음). grep
파일 이름을 삽입하려면 :
find . -type f -name '*.jar' -exec sh -c '
for file do
bsdtar tvf "$file" "*myClass*" | grep -H --label="$file" "^"
done' sh {} +
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다