- 论坛徽章:
- 0
|
推荐一个unix下目前最好的压缩打包软件ARJ,用法与DOS下的ARJ一样,不论从速度,方便性上都不错!
该程序用SHELL编写,调用BZIP,如没有BZIP,也可用unix中自带的compress代替,只是压缩率低一些。支持通配符。
程序如下:
#
exam(){
echo "
格式: arj [ -r -v -V] [axv](命令) 压缩包名 源文件名
命令: a 打包 v 列包内容 x 解包
选项: -r处理子目录 -v显示文件名 -V以.显示进度"
exit 1
}
PATH=/etc:/bin:/usr/bin
R= SEL= YN=
[ "$#" -lt 2 ] && exam
until [ "$YN" = 1 ]
do
case $1 in
-r) R=r
shift
;;
-V) SEL=V
shift
;;
-v) SEL=v
shift
;;
a|x|v) YN=1
;;
*) echo "命令错误! avx"
exam
;;
esac
done
FIL=$2
[ "$1" = a ] && {
[ "$#" -lt 3 ] && exam
echo "$2" | egrep "\.arj$" >/dev/null 2>/dev/null || FIL=$2.arj
[ -s $FIL ] && {
echo "目标文件 $FIL 已存在, 是否覆盖!! \c"
read YN
[ "$YN" = y ] || { echo "放弃!"; exit; }
}
[ -d $3 -a "$R" = "" -a "$3" != . ] && {
echo "不带 -r 参数压缩一个日录时, 须先进入该目录!"
exit
}
echo "压缩-->> $FIL..."
shift; shift
if [ "$R" = r ]
then
find $* -print | egrep -v "^$FIL$|^\.\/$FIL$" | cpio -o$SEL | bzip > $FIL
else
ls $* | egrep -v "^$FIL$" | cpio -o$SEL | bzip > $FIL
fi
echo "结束!!"
}
[ "$1" = v -o "$1" = x ] && {
[ -f $2 ] || { echo "压缩包 $2 不存在!"; exit 1; }
[ "$1" = v ] && {
shift;shift
echo "f= $*"
cat $FIL | bzip -d | cpio -itv $* | tee /usr/tmp/arj.tmp
echo "列出\c"
}
[ "$1" = x ] && {
shift;shift
cat $FIL | bzip -d | cpio -ilmduv $* | tee /usr/tmp/arj.tmp
echo "解出\c"
}
echo "文件总数: `wc -l /usr/tmp/arj.tmp | tr -d '/usr/tmp/arj.tmp'` 个"
}
rm -f /usr/tmp/arj.tmp |
|