文件切割脚本

最近研究Linux Shell,Peal,C,Apache方面的东西
发现一个很有价值Shell脚本,自动分割大的文件为若干块。

网上流传的类似脚本都是调用split分割
而这个脚本调用 dd 直接把输入流输出为多个文件,技术上非常先进!
很有参考价值。

代码中有注释。
中文注释以 #?开头,如果需要,可以用
cat SCRIPT.sh | grep -v ‘^#/?’ > NEWSCRIPT.sh
删除全部中文注释

#!/bin/bash
 
#? 检测参数是否正确
if  [ -z "$2" -o ! -r "$1" ]; then
echo 'Usage: mince [file] [chunk size] "
exit 255
fi
 
#? Shell下获取文件大小经典方法
SIZE=`ls -l $1 | awk '{print $5}'`
 
if  [ $2 -gt $SIZE ] ;then
echo " chunk size is bigger then file size ,don't need to split "
exit 254
fi
   
#? 分割. 注意 由于最后一个文件块大小一定会小于CHUNK,必须用 conv=noerror 强制dd生成最后一个文件块.
CHUNK=$2
TOTAL=0
PASS=0
while [ $TOTAL -lt $SIZE ]; do
PASS=$((PASS+1)
echo "Creating $1.$PASS..."
dd conv=noerror if=$1 of=$1.$PASS bs=$CHUNK skip=$((PASS-1) count=1 2>/dev/null
TOTAL=$((TOTAL+CHUNK))
done
 
echo "Created $PASS chunks out of $1 ."
  
要重新组合数据块,用下面命令

cat `ls FILENAME.* | sort -n -t . +2` > FILENAME.complete

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值