下面是转载的一段sh脚本:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 file"
exit 1
fi
TSIZE=0
for FSIZE in $(tar tvvf $1 | awk '{print $3}'); do
if [ "$FSIZE" = "${FSIZE//[^0-9]/}" ]; then
TSIZE=$((TSIZE+FSIZE))
fi
done
[ $TSIZE -eq 0 ] && exit 1
MSG="Extracting..."
PROG_POS=$((${#MSG}+1))
PERC_POS=$((${#MSG}+53))
echo $MSG
PREV=-1
NSIZE=0
for FSIZE in $(tar xvvf $1 | awk '{print $3}'); do
if [ "$FSIZE" = "${FSIZE//[^0-9]/}" ]; then
NSIZE=$((NSIZE+FSIZE))
PERCENT=$((NSIZE*100/TSIZE))
if [ $PERCENT -ne $PREV ]; then
PLUS=$((PERCENT/2))
PROGRESS=$(printf "%.${PLUS}d" | tr '0' '+')
echo -e "\e[A\e[${PROG_POS}G${PROGRESS}=>"
echo -e "\e[A\e[${PERC_POS}G${PERCENT}%"
PREV=$PERCENT
fi
fi
done需要改动的地方可以自己修改。
本文介绍了一段bash脚本,用于计算指定tar文件中所有文件的总大小,并实时显示进度。脚本通过命令行参数接收tar文件路径,过滤非数字字符以获取文件大小,累加总大小,最后比较总大小是否为零来决定是否退出或继续执行。此外,脚本还实现实时更新进度条的功能,让用户了解文件提取过程的进度。

被折叠的 条评论
为什么被折叠?



