从一组文件中查找最新文件

时间:2014-01-10 17:08:54

标签: linux

我有一个文件test.dat,里面有多个文件,如a1,a2,a3 b1,b2,b3 c1,c2,c3。我想保留a,b和c的最新版本。 我使用了cat test.dat|sort -r|sed -ne ''1',$p'但它给了我最新的一个系列,我想要a,b和c系列的最新版本。有任何建议请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以使用cat test.dat | ls -t -t选项将按日期按升序列出文件。

答案 1 :(得分:0)

根据您对评论的澄清,我完全重写了我的答案。假设文件输入如下:

rul@helicon:~$ cat test.dat 
/home/user/a_4.0.2
/home/user/a_3.0.2
/home/user/a_1.0.1
/home/user/b_R2.1.1
/home/user/b_2.1.1
/home/user/b_1.2.1
/home/user/b_1.1.1
/home/user/c_R1.1.1
/home/user/c_5.1.1
/home/user/c_3.1.1
/home/user/c_2.1.1
/home/user/c_1.1.1

您可以通过以下方式获取您正在寻找的文件:

rul@helicon:~$ for i in $(sort test.dat | cut -d_ -f1 | uniq); do grep -E ^$i test.dat | sort -r | head -n1; done
/home/user/a_4.0.2
/home/user/b_R2.1.1
/home/user/c_R1.1.1

有点难看,但它确实有效。