shell分割大文件

 
[root@node1 csv2aus]# vim dsplit.sh 

#######################################################
####Author:duanty
####Description: dsplit bigData.csv n
####split the file BigData.csv into n part, and mv to part[i]/
#######################################################

N=`wc -l $1 | awk -F " " '{print $1}'`
n=$(($N/$2+1))
split -l $n $1
x=(xa0 xaa xab xac xad xae xaf xag xah xai xaj)
rm -rf part* 1>/dev/null 2>&1

for i in `seq $2`; do
    mkdir part$i
    mv ${x[$i]} part$i
done

for i in `seq $2`; do ls part$i; done

### Shell脚本实现文件分割 为了实现文件分割,可以采用多种方式来处理不同需求下的文件切割工作。一种常见的做法是基于行数进行分割,这适用于大多数文本文件的操作场景。 对于按照指定行数分割文件的需求,有如下示例代码展示如何将`testfile.txt`这个拥有7800行记录的文档均匀划分为13份子集,每部分包含600行数据,并赋予新创建的小型文件们带有特定前缀的名字: ```bash #!/bin/bash input="testfile.txt" prefix="SplitFile" lines=600 split -l $lines "$input" "$prefix." ``` 上述命令通过调用`split`工具并设置参数`-l`指定了要切分出来的每个片段应具有的最大行数,在这里设定为600行;同时设置了输入源以及输出目标的基础名称[^3]。 如果希望依据字节数而非行数来进行划分,则可选用其他形式的指令组合。比如下面的例子展示了怎样把一个较大的二进制或纯文本类型的文件平均分配到十个更小的部分里边去,这些碎片会以前缀`chunk`开头命名: ```bash #!/bin/bash filename="data.txt" output_prefix="chunk" total_size=$(wc -c <"$filename") # 获取总大小 part_size=$(( (total_size + 9) / 10 )) # 计算单个分片的大致尺寸 split -b ${part_size}B "$filename" "${output_prefix}_" ``` 此段脚本首先计算整个待处理对象的实际占用空间量级,接着决定每一个独立单元应当占据的空间份额,最后借助于`split`命令及其选项完成实际的数据分离过程[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值