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