列出最小序列的文件

时间:2011-05-17 08:02:16

标签: perl bash unix sed awk

我在目录中有一些文件如下(不一定排序):

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

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

在bash中:

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

答案 1 :(得分:4)

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

或:

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

或:

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