[Linux] 将某一目录下的所有文件分隔为相同行数的文件

功能

将某一目录下的所有文件分隔为相同行数的文件

实现

INDIR=./in
OUTDIR=./out
FILE_MAX_LINE=100000
CUR_LINE_NUM=0
CUR_MATCH_FILE_IDX=0
MSG_TPYE=ccr


# define and clear tmp file
TMP_FILE=$OUTDIR/get_match_file.tmp
rm -f $TMP_FILE


# split file
ls -lrt $INDIR | grep ^- | awk '{print $NF}'| while read filename
do
        filepath=$INDIR/$filename

        LINE_NUM=`wc -l $filepath | awk '{print $1}'`
        CUR_LINE_NUM=`echo "$CUR_LINE_NUM+$LINE_NUM" | bc`
        cat $filepath >> $TMP_FILE

        while [ $CUR_LINE_NUM -ge $FILE_MAX_LINE ]
        do
                head -n $FILE_MAX_LINE $TMP_FILE > $OUTDIR/p${MSG_TPYE}.${CUR_MATCH_FILE_IDX}
                sed -i '1,'${FILE_MAX_LINE}'d' $TMP_FILE
                CUR_MATCH_FILE_IDX=`echo "$CUR_MATCH_FILE_IDX+1" | bc`
                CUR_LINE_NUM=`echo "$CUR_LINE_NUM-$FILE_MAX_LINE" | bc`
        done
done


# output last file
cat $TMP_FILE > $OUTDIR/p${MSG_TPYE}.${CUR_MATCH_FILE_IDX}
rm -f $TMP_FILE

结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值