2011-05-17 58 views
2

我有如下一个目录中的一些文件中的文件(不一定排序):列表以最小的序列

A_10 
A_20 
A_30 
B_10 
B_30 
C_10 
C_20 
D_20 
D_30 
E_10 
E_20 
E_30 

102030分别是A,B,C,D,E的序列号。

我只需要选择与所有A,B,C,D,E 最小序列这些文件的输出应该是:

A_10 
B_10 
C_10 
D_20 
E_10 

可能有人帮助我吗?

+1

分别是一个一对一的关系,所以这是不可能的10,20,30分别是A,B,C,D,E的序列号...... – tadmc 2011-05-17 13:36:43

回答

4
perl -le ' 
    print join $/, 
    grep !$_{(split "_")[0]}++, 
     sort glob "*_*" 
    ' 

或:

printf '%s\n' *_* | sort | awk -F_ '!_[$1]++' 

或:

printf '%s\n' *_* | sort -t_ -uk1,1 
4

在bash:

for x in A B C D E; do 
    ls -1 ${x}_* | sort | head -n1 
done