zoukankan      html  css  js  c++  java
  • 批量解压缩,显示进度条(1)

    此脚本实现解压多个压缩包,并且已经进度条形式在终端打印当前进度。

     #!/bin/bash
     #***************************************
     #   批量解压缩
     # 	 Batch decompression
     #   981789763@qq.com
     #   2018-07-11 
     #***************************************
     #
     jdt(){
     # $1的值为当前正在处理的文件名 , $2的值为缓冲文件的文件名
     sum=0;d=0;n=0
     #获取总文件总个数
     sum=$(cat $2 | wc -l)
     #获取当前处理第几个文件	
     d=$(cat -n $2 | grep "$1"  | awk '{printf $1"
    "}') 
     #计算百分比
     n=$(echo "$d*100/$sum" | bc)
     str=""
     for ((x=0;x<=$(echo "$n/2"|bc);x++))
     do
       str+="="
     done
     printf "[e[036m%-51se[0m] %d%% 
    " "$str" "$n" 
     }
     #=========================================
     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
     }
     #========================================
     main (){
     #定义一个临时文件.tmp,赋给变量,方便修改, $1 为解压路径
     name_tmp=.tmp;p=0
     cd $1 && ls |grep -E ".tar|.tgz|.gz|.bz2|.zip" >/dev/null 2>&1
     if [ ! $? -eq 0 ];then
    	echo "当前目录下无压缩包"
    	exit 111
     fi
     cd $1 && ls |grep -E ".tar|.tgz|.gz|.bz2|.zip" > $name_tmp || exit 3
     [ -d /tmp/jys_tmp/ ] || mkdir /tmp/jys_tmp
     printf "当前解压路径:%s 共%d个压缩包
    " "$1" "$(cat $name_tmp | wc -l)"
     for file_name in $(cat $name_tmp)
     do
        jys $file_name
        if [ $? -eq 1 ];then
           p=$((1+$p))
        else  
          mv $file_name /tmp/jys_tmp/ >/dev/null 2>&1
        fi
        jdt $file_name $name_tmp
     done
     rm -rf $name_tmp
     echo -e
     #echo -e "
    共有$p个未知格式压缩包或文件"
     }
     #================主程序====================
     dir_name="";dir_name=$1
     if [ -n "$dir_name" ];then	
    	main $dir_name
     else
        echo "Enter the absolute path to decompression after the script"
     fi
    
    

    效果如下

    jdt1

    优化第二版:

    批量解压缩,显示进度条(2)https://www.cnblogs.com/outsrkem/p/11257454.html


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

  • 相关阅读:
    C#和sqlserver中生成新的32位GUID
    IIS7下swfupload上传大文件出现404错误
    jQuery 判断是否为数字的方法 及 转换数字函数
    js数组与字符串的相互转换方法
    jquery 中如何将数组转化为json字符串,然后再转化回来?
    Firemonkey Android 虚拟机
    Eclipse apk 签名
    win10 修改hosts
    eclipse 预览Android界面报错
    夜神模拟器
  • 原文地址:https://www.cnblogs.com/outsrkem/p/11068766.html
Copyright © 2011-2022 走看看