gpt4 book ai didi

java - 如何使用 find 命令查找哪个 jar 包含特殊文件

转载 作者:行者123 更新时间:2023-12-01 23:35:31 24 4
gpt4 key购买 nike

在 shell 下执行

find . -name "*.jar" -exec jar -tf {} \;|grep  "message_track.properties"
message_track.properties
message_track.properties

它有两个相同的文件,但是哪两个 jar 包含该文件。如何找到它?

最佳答案

find中添加-print,以便打印出文件名,然后使用egrep:

$ find . -name "*.jar" -print -exec jar -tf {} \;|egrep  "jar$|message_track.properties"

./foo.jar
./bar.jar
message_track.properties
./baz.jar
message_track.properties

这表明 bar.jarbaz.jar 包含该文件。

您甚至可以通过另一个 grep 进行管道传输,假设该文件在每个 jar 中仅出现一次:

$ find . -name "*.jar" -print -exec jar -tf {} \;|egrep  "jar$|message_track.properties" | grep -B1 message_track.properties

./bar.jar
message_track.properties
./baz.jar
message_track.properties

如果你想做得太过分,你甚至可以使用awk,如下所示:

$ find . -name "*.jar" -print -exec jar -tf {} \; | awk '{if($1~/jar$/)jar=$1;else if($1~/message_track/)arr[jar]=$1;}END{for(i in arr){print i " contains " arr[i]}}'

./bar.jar contains message_track.properties
./baz.jar contains message_track.properties

关于java - 如何使用 find 命令查找哪个 jar 包含特殊文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com