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 阅读(235) 评论(0)  编辑 收藏 引用 所属分类: UnixProgram

<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

相册

最新评论