我有一个场景,我在文件夹中有很多文件,我需要所有文件的格式,附加文件阈值是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
答案 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
目录的内容。