需求背景:
- 将文件按照特定行数拆分成多个文件,文件后缀名为.csv,用于性能测试参数化文件分布式执行文件的拆分;
- 命令:sh 脚本名 拆分文件名 拆分后文件行数
脚本实现:
#!/bin/bashif [ $# != 2 ]; thenecho "Error: sh $0 拆分文件名 拆分文件行数"exit 1
fi#拆分文件名
fileName=$1
echo "拆分源文件名:$1";
#拆分后每个文件行数
lineNumber=$2
echo "拆分文件行数:$2";#拆分文件
split -d -l $lineNumber $fileName data_# 后缀名
suffix=".csv"# 文件名列表(假设已知的文件前缀)
files=$(ls data_*) # 根据实际情况调整文件名列表# 为每个文件添加后缀并输出新的文件名
for file in ${files}; donew_file=${file}${suffix} # 组合成新的文件名,包含后缀#echo "$new_file" # 输出新文件名,确认无误后去掉echo执行重命名操作# 重命名文件(移动原文件到新的带后缀的文件名)mv $file $new_file # 注意:请确保没有其他同名文件存在,否则会被覆盖
done