2011-05-17 57 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