当前位置: 技术问答>linux和unix
想从目录下取得特定文件名,有什么好方法?
来源: 互联网 发布时间:2015-11-14
本文导语: FILE 1:FSCBD070100120060206seq02.csv FILE 2:FSCBD070100120060206seq01.csv FILE 3:FSCBD070100120060206seq03.csv FILE 4:FSCBD070100120060207seq01.csv FILE 5:FSCBD070100120060207seq02.csv FILE 6:FSCBD070100220060206seq01.csv FILE 7:FSCBD060100120060207seq01.csv FILE 8:FSCBD060100...
FILE 1:FSCBD070100120060206seq02.csv
FILE 2:FSCBD070100120060206seq01.csv
FILE 3:FSCBD070100120060206seq03.csv
FILE 4:FSCBD070100120060207seq01.csv
FILE 5:FSCBD070100120060207seq02.csv
FILE 6:FSCBD070100220060206seq01.csv
FILE 7:FSCBD060100120060207seq01.csv
FILE 8:FSCBD060100120060207seq02.csv
假定目录下有这么8个文件,文件名分成4段,分别是FSCBD0701(类型)+001(code)+20060207(日期)+seq??。
想把前3段作为主键,取得seq最大的那个文件的文件名。
也就是取出FSCBD070100120060206seq03.csv,FSCBD070100120060207seq02.csv,FSCBD070100220060206seq01.csv,FSCBD060100120060207seq02.csv
用C和shell分别有什么好方法呢?
FILE 2:FSCBD070100120060206seq01.csv
FILE 3:FSCBD070100120060206seq03.csv
FILE 4:FSCBD070100120060207seq01.csv
FILE 5:FSCBD070100120060207seq02.csv
FILE 6:FSCBD070100220060206seq01.csv
FILE 7:FSCBD060100120060207seq01.csv
FILE 8:FSCBD060100120060207seq02.csv
假定目录下有这么8个文件,文件名分成4段,分别是FSCBD0701(类型)+001(code)+20060207(日期)+seq??。
想把前3段作为主键,取得seq最大的那个文件的文件名。
也就是取出FSCBD070100120060206seq03.csv,FSCBD070100120060207seq02.csv,FSCBD070100220060206seq01.csv,FSCBD060100120060207seq02.csv
用C和shell分别有什么好方法呢?
|
用awk写个小程序就可以了:
#awk.scr
{
newkey = substr($0, 1, 20)
if (key == "")
key = newkey
if (key != newkey) {
print lastfile
key = newkey
}
lastfile = $0
}
END { print lastfile }
--------------------------
然后
ls | awk -f awk.scr
#awk.scr
{
newkey = substr($0, 1, 20)
if (key == "")
key = newkey
if (key != newkey) {
print lastfile
key = newkey
}
lastfile = $0
}
END { print lastfile }
--------------------------
然后
ls | awk -f awk.scr
|
用正则表达式。