Linux环境下大文件按行平均拆分

发布时间:2026/7/7 7:08:06
Linux环境下大文件按行平均拆分 大文件拆分文件在通过网络传输到我们作业服务器时可以通过Linux脚本将文件内容按行数平均拆分成指定等分拆分脚本可根据需求添加参数文件命名格式 {FIleName}{YYYYmmdd}{FILETAG}#!/bin/bash ##文件路径 DIR$1 ##文件备份路径 BACKUPDIR$2 ##文件后缀 FILETAG$3 ##文件日期后主t-1日 DATE$(date -d-1 day %Y%m%d) cd ${DIR} ##创建日期文件夹 rm -rf ${DATE} mkdir ${DATE} NEWDIR${DIR}${DATE} cd ${DIR} ##获取文件名列表 for k in $(ls *${DATE}*${FILETAG}) do TMP\${k}.\, FILENAMELIST${FILENAMELIST}${TMP} done FILENAMELIST${FILENAMELIST%?} PARAM1{\jobDay\:\${DATE}\,\fileNameList\:[${FILENAMELIST}]} ##文件转移至日期目录下 cd ${DIR} cp *${DATE}* ${NEWDIR} cd ${NEWDIR} ##循环分割每个文件可根据需求传入参数修改等份这里固定40 for k in $(ls ${NEWDIR}) do for((i0;i40;ii1)) do if [ ${i} -lt 10 ]; then FILE${k}.0${i} else FILE${k}.${i} fi if [ ! -e ${FILE} ]; then touch ${FILE} fi done NUMwc -l ${k} | awk {print $1} NUMS$((${NUM}/40 1)) split -l ${NUMS} -d -a 2 ${k} ${k}. done cd ${DIR} ##文件转移至备份 mv *${DATE}*$FILETAG ${BACKUPDIR} ##返回参数 echo ${PARAM1}