- 论坛徽章:
- 0
|
感谢楼上的各位的答复,此问题的重点还是在于数据量巨大,过百万的文件如果不能循环处理的,那肯定是挂。
首先我之前的回复贴出了我现在的处理方法和说明,直接ls定向的结果就是必须将文件名精确到好几位,即不能直接直接ls *.unl.Load.err,哪怕再加上个文件名都不行,必须精确到年月日这一位,十几个不同的文件名对应了4个月的时间,意味着我要疯狂。
我又想了个笨办法,我先将文件名和日期用输出到两个不同的unl文件里,然后在shell中加入查找,如匹配条件则输出mv的shell,这样大概可以,不过今天没过去处理这事,不知道这样做会不会跑死,请各位大侠评估下,如下是改动后的shell;
date.unl的类型就是按照文件的名字规则用excul导出的一列年月日20091201,20091202。。。。,filename.unl里定义的是按照实际要修改的文件名的前面部分aaaa,bbbb,cccc。。。。。
src_dir=/export/system/wk/test
dest_dir=
a=`cat date.unl`
b=`cat filename.unl`
cd $src_dir
echo "begin at `date \"+%Y/%m/%d %H:%M:%S\"`." > $src_dir/mv.log
for A in $a
do
for B in $b
do
ls ${B}${A}*.unl.Load.err|awk -F'.Load.err' '{print "mv "$0" "$1".unl"}'
>$src_dir/mv.sh
chmod +x mv.sh
cat mv.sh>>$src_dir/mv.log
mv.sh>>$src_dir/mv.log
done
done
echo "end at `date \"+%Y/%m/%d %H:%M:%S\"`." >> $src_dir/mv.log
[ 本帖最后由 w1525 于 2009-12-21 22:17 编辑 ] |
|