#!/bin/sh
do_help()
{
echo "syntax:"
echo "split "
}
orig_file=$1
split_num=${2:-2}
dest_path=${3:-.}
if ! ( [ -f "$orig_file" ] &&
[ -r "$orig_file" ] && [ -s "$orig_file" ] ); then
echo "file $orig_file is invalid."
do_help
exit 1
fi
if ! [ $split_num -gt 1 ]; then
echo "split_num is invalid."
do_help
exit 1
fi
if ! ( [ -d $dest_path ] && [ -x $dest_path ] );then
echo "dest_path is invalid."
do_help
exit 1
fi
size=$(ls -l $orig_file | awk '{print $5}')
split_size_avr=$(($size/$split_num))
bs=1
if [ $size -gt $((1024*1024)) ]; then
bs=1024
split_size_avr=$(($split_size_avr/1024))
fi
for i in $(seq $split_num);do
if [ $i -eq 1 ]; then
dd if=$orig_file \
of=$dest_path/${orig_file}.$i bs=$bs count=$split_size_avr
elif [ $i -eq $split_num ];then
dd if=$orig_file \
of=$dest_path/${orig_file}.$i bs=$bs \
skip=$(($split_size_avr*$(($i-1)))) \
count=$(( $size - $(($split_size_avr*$(($i-1)))) ))
else
dd if=$orig_file \
of=$dest_path/${orig_file}.$i bs=$bs \
skip=$(($split_size_avr*$(($i-1)))) \
count=$split_size_avr
fi
done
命令格式:
./split filename N dest_path
合并N个小文件为一个大文件:
代码:
cat $(ls |grep -E 'filename\.') > filename
阅读(1103) | 评论(0) | 转发(1) |