查找除具有不同主要版本的两个最新版本以外的所有版本

时间:2019-01-24 22:26:31

标签: bash shell awk sed zsh

背景

我想删除不需要的iOS设备支持文件的文件夹,但会占用大量磁盘空间。我只想保留两个具有不同主版本的最新版本(12.2.1和13.0.1,包括其arm64版本)。

使用一壳式内胆可以做到吗?

给出使用语义版本命名的文件夹列表,如下所示:

11.2.1
11.2.1 arm64
12.0.1
12.0.1 arm64
12.0.2
12.0.2 arm64
12.1.1
12.1.1 arm64
12.1.2
12.1.2 arm64
12.2.1
12.2.1 arm64
13.0.0
13.0.0 arm64
13.0.1
13.0.1 arm64

预期输出:

11.2.1
11.2.1 arm64
12.0.1
12.0.1 arm64
12.0.2
12.0.2 arm64
12.1.1
12.1.1 arm64
12.1.2
12.1.2 arm64
13.0.0
13.0.0 arm64

意味着应将其从原始列表中删除:

12.2.1
12.2.1 arm64
13.0.1
13.0.1 arm64

1 个答案:

答案 0 :(得分:1)

假设每个版本同时具有vanilla版本和arm64版本,怎么办:

comm -2 -3 list.txt <(sort -t. -n -r list.txt | awk -F. 'a[$1]++<2' | head -4 | sort)

list.txt所在的位置:

11.2.1
11.2.1 arm64
12.0.1
12.0.1 arm64
12.0.2
12.0.2 arm64
12.1.1
12.1.1 arm64
12.1.2
12.1.2 arm64
12.2.1
12.2.1 arm64
13.0.0
13.0.0 arm64
13.0.1
13.0.1 arm64

和输出:

11.2.1
11.2.1 arm64
12.0.1
12.0.1 arm64
12.0.2
12.0.2 arm64
12.1.1
12.1.1 arm64
12.1.2
12.1.2 arm64
13.0.0
13.0.0 arm64