根据unix中附加的文件行计数将文件附加到多个文件中

时间:2014-06-30 05:14:03

标签: linux shell unix scripting

我有一个场景,我在文件夹中有很多文件,我需要所有文件的格式,附加文件阈值是5000,如果它超过它应该创建一个新文件...和新的文件也应该是5000.已经尝试过以下逻辑,它只适用于第一个附加文件。

ls -ltr *re.txt | awk '{print $9}' > files.txt 

 touch file_int.txt
 touch file_count.txt
 for file in `cat files.txt`
do
    cat file_count.txt >> file_int.txt
    count=`wc -l < file_int.txt`
    count1=`wc -l < $file`
    count3=`expr $count + $count1`
    file_date_time=file_`date +%H_%M_%S_%N`.txt
    if [ $count3 -gt 5000 ]
        then
        cat $file >> $file_date_time
        cat $file_date_time > file_int.txt  
    else
        cat $file >> file_count.txt
    fi
done

1 个答案:

答案 0 :(得分:0)

您可能想考虑使用split命令:

split -l 5000 bigfile.txt `date +%H_%M_%S`

文件名可能不是您所需要的,但拆分会将您的文件分解为5000行块。

您可以像这样重写脚本:

#!/bin/bash

mkdir to_delete
for file in *re.txt
do
   split -l 5000 $file ${file}_`date +%H_%M_%S_`
   mv $file to_delete/.
done

如果工作正常,则可以删除to_delete目录的内容。