BLUESKY
一步一个脚印向前走
首页
新文章
新随笔
管理
统计文件号中的序列号的连续性
由于文件数太多,差不多都是几百万的,如果手工检测,那将是一个浩大的工程,所以还得借助于shell脚本来解决
文件名的格式如下图:
还有一些预备的工作得做:
1、主要是改变文件名中的各个字段的顺序,方便后面的操作
more total
.
txt
|
while
read
i
do
echo
$i
|
awk
-
F
.
'
{ printf("%s.%s.%s.%s\n"),$4,$1,$2,$3}
'
>>
new_file_list
done
2、排序输出到新文件中
sort
new_file_list
>
FileList
3、执行主要的shell代码进行文件序列检测
#
测试大量文件中的文件名序列是否有断号、重号
OldSeq
=
0
OldHead
=
"
A
"
CurrSeq
=
1
CurrHead
=
"
B
"
NextSeq
=
1
more FileList
|
while
read
i
do
#
截取文件名中的序列号
CurrSeq
=
`echo
$i
|
cut
-
d
.
-
f4
|
awk
'
{printf("%d",$1)}
'
`
#
截取文件名中的前缀
CurrHead
=
`echo
$i
|
cut
-
d
.
-
f1
-
3
`
if
[
$OldHead
=
$CurrHead
]
then
if
[
$NextSeq
-
ne
$CurrSeq
]
then
if
[
$OldSeq
-
eq
$CurrSeq
]
then
echo
"
$i is double!!
"
>>
double_file
.
txt
else
echo
"
The file $CurrHead.$NextSeq is not found,Current File is: $CurrHead.$NextSeq
"
echo
"
The file $CurrHead.$NextSeq is not found,Current File is: $CurrHead.$NextSeq
"
>>
Lost_file
.
txt
fi
fi
fi
OldHead
=
$CurrHead
OldSeq
=
$CurrSeq
NextSeq
=
$CurrSeq
((NextSeq
+=
1
))
done
执行:
nohup sh CheckFileSeq
.
sh
&
这样就可以把一些序列号断开的文件找出来,以及一些重复的序列号
posted on 2007-08-14 19:29
LG
阅读(246)
评论(0)
编辑
收藏
引用
所属分类:
UnixProgram
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
相册
漫画
同学
最新评论