假設你有興趣,其中包含該文件名的目標字符串相匹配文件的jar文件,你可以寫一個簡單的循環:
search="some_search_text"
for file in *.jar
do
echo "$file"
jar -tf "$file" | grep -e "$search"
done
這一唱一和的JAR文件的名稱,然後如果該jar文件包含一個名稱與搜索字符串匹配的文件,該文件將被顯示。 -e
確保即使您的搜索字符串以破折號開頭,也不會造成混淆。
如果你不想不匹配的名稱出現,則:
search="some_search_text"
for file in *.jar
do
match=$(jar -tf "$file" | grep -e "$search")
if [ -n "$match" ]
then
echo "$file"
echo "$match"
fi
done
如果你只是想jar文件名出現,如果它包含名稱相匹配的文件,然後(很明顯):
search="some_search_text"
for file in *.jar
do
match=$(jar -tf "$file" | grep -e "$search")
if [ -n "$match" ]
then
echo "$file"
fi
done
雖然可以縮小到:
search="some_search_text"
for file in *.jar
do
[ -n "$(jar -tf "$file" | grep -e "$search")" ] && echo "$file"
done
兩個罐子和焦油COMM並根據調用處理其中一個文件;沒有辦法讓一個調用過程處理多個文件。
如果你在jar文件很感興趣,其中jar文件包含符合您的搜索文本任何東西,那麼你可以使用:
search="some_search_text"
grep -e "$search" -l *.jar
的-l
列出的jar文件的名字。儘管典型的jar文件包含二進制數據,但它仍能正常工作。
你的命令查找的是jar文件中包含'some_search_text'的文件名。你正在尋找包含字符串的jar文件,還是包含文件名包含字符串的文件的jar文件?處理是完全不同的。 –
如果您正在尋找一種解決方案,以遞歸方式在jar文件中查找**文件名**,您可以查看此shell腳本作爲起點:https://github.com/afester/CodeSamples/blob/ master/Shell/bash/grepJar –
感謝您指出含糊之處。我正在尋找後者,任何包含名稱包含字符串的文件的jar文件。 – Denial