14 Jul

帮朋友写的一个脚本

分类:电脑技术 » linux shell   出处:本站原创         | |
要求:
1、目录/FTP/下有很多用户目录,分别是某一个公司的英文缩写,FTP目录结构为
/FTP/AAA/DOWNLOAD
/FTP/BBB/DOWNLOAD
......
2、在每一个公司的DOWNLOAD下,每天会有很多文本文件上传过来,但为了便于数据统计,导入到XML乃至数据库中,需要对上传的文件进行批量重命名,命名的格式如:CCO_AAA_SZ2008071401_SZ_V04.test1.txt,其中2008071401是文件修改日期。

3、文件内容如:
引用
AAA公司|上传数据|A经理
0012|560|jack|2006
1323|7787|rose|2008
abcd|yes|35|88


重新命名文件之后,需要对每个文件的内容进行修改,修改要求如下:
以|为分隔符分割字段,删除文件的第一行,将剩下内容每一行|之前的字符删除(包括|符号),然后将|替换成||,最后判断剩下的内容,如果剩下文件内容的第一行不是以13开头,删除!

初步代码如下,还不完善,有不妥的地方希望大家批评指正。

#!/bin/bash
#
for path in /FTP/*/DOWNLOAD ; do
    cd $path
    compay=`pwd | awk -F/ '{print $(NF-1)}'`

    ls -l $1 | grep ^[^d] | awk '{print $9}' | sed -e '/^$/d' | while read name;do
    if [ ! `echo $name | awk '/^CCO/'` ]; then
        modifytime=`ls -l $name --time-style +%Y%m%d | awk '{print $6}'`
        newname=CCO_"$compay"_SZ"$modifytime"01_SZ_V04."$name".txt
        echo "rename $path/$name to $path/$newname ..."
        mv $path/$name $path/$newname
        echo "modify the content of $newname"
        sed -i '1d; s/[^|]*|//; s/|/||/g' $newname
        sed -i '1{/^13/!d}' $newname
    fi
    done
done
272 次阅读
0 条评论
0 条引用
不指定 作者:thatday   时间:16:23   Tags:
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮
高级编辑