我有一种情况,我的文件夹中有很多文件,并且我需要所有文件都采用以下格式:附加文件阈值为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

最佳答案

您可能要考虑使用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目录的内容。

10-06 04:44