如何查找不同版本的重复 jar

如何查找不同版本的重复 jar

假设我有一个这样的 jar 列表。

a_1.0.0.jar
b_1.0.0.jar
b_2.0.0.jar
c_1.0.0.jar
c_1.3.0.jar
c_3.2.0.jar
d_2.0.0.jar
e_3.0.0.jar

我想获取重复的 jar 列表。

像这样

b_1.0.0.jar
b_2.0.0.jar
c_1.0.0.jar
c_1.3.0.jar
c_3.2.0.jar

或者像这样

b
c

非常感谢您的帮助。

答案1

如果文件名都是这样构建的,您可以执行以下操作:

ls | sed 's/_.*//' | uniq --repeated

这将列出所有文件,删除下划线和其后的所有内容,然后uniq仅打印重复的行。

答案2

要获得第二个输出:

<list.txt sort -u | cut -d _ -f 1 | uniq -d

步骤:

  1. sort排序,以便uniq稍后完成其工作。使用-u该工具会折叠相同的行,因此它们不会产生误报。(您的示例不包含重复项;这是一般预防措施)。
  2. cut以此_作为分隔符并打印第一个字段,因此只有ab等保留下来。
  3. uniq -d仅打印重复的行,每组一次。

笔记:

  • 任何名称的额外内容_都会破坏上述逻辑。
  • 您的示例已排序且没有重复项。如果实际数据是这样的,则您不需要sort

相关内容