批量解压缩,显示进度条(2)

#!/bin/bash
#***************************************
#   批量解压缩
#   Batch decompression
#   981789763@qq.com
#   2019-07-11 
#***************************************
function jdt(){
    #进度条打印, $1 当前的个数, $2 总文件数
    str=""
    #(($((${1}*100/${2}))/2)) , 长度/2是为了只打印1/2的进度条
    for ((x=0;x<=$(($((${1}*100/${2}))/2));x++))
    do
        str+="="
    done
    printf "[e[036m%-51se[0m] %d%% 
" "$str" "$((${1}*100/${2}))"  #$((${1}*100/${2}))计算出百分比
}
#=========================================
function jys(){
    case $1 in
    *.tar.*) tar -xf $1 >/dev/null 2>&1
    ;;
    *.tar) tar -xf $1 >/dev/null 2>&1
    ;;
    *.tgz) tar -xf $1 >/dev/null 2>&1
    ;;
    *.zip) unzip -o $1 >/dev/null 2>&1
    ;;
    *.gz) gunzip  $1 >/dev/null 2>&1
    ;;
    *.bz2) bzip2 -d $1 >/dev/null 2>&1
    ;;  
    *) return 1
    ;;
    esac
}
#========================================
function main (){
    m=1
    cd $1 #$1为压缩包目录
    file=(`ls |grep -E ".tar|.tgz|.gz|.bz2|.zip"`)
    printf "当前解压路径:%s ,共%d个压缩包
" "$1" "${#file[*]}"    
    for file_name in ${file[*]}
    do
        jys $file_name
        jdt $m ${#file[*]}
        let m+=1
    done
    mkdir src
    find . -maxdepth 1 -type f -exec mv {} ./src ; &>/dev/null 
    echo -e
}

#------------------
if [ -n "$1" ];then 
    main $1
else
    echo "Enter the absolute path to decompression after the script"
fi

效果如下:

jdt2
jdt1

原始第一版https://www.cnblogs.com/outsrkem/p/11068766.html


作者:Outsrkem
出处:https://www.cnblogs.com/outsrkem/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/outsrkem/p/11257454.html