免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: zooyo
打印 上一主题 下一主题

让cp文件也显示进度条[修正版] [复制链接]

论坛徽章:
7
天秤座
日期:2014-08-07 13:56:30丑牛
日期:2014-08-27 20:34:21双鱼座
日期:2014-08-27 22:02:21天秤座
日期:2014-08-30 10:39:11双鱼座
日期:2014-09-21 20:07:532015年亚洲杯之日本
日期:2015-02-06 14:00:282015亚冠之大阪钢巴
日期:2015-11-02 14:50:19
31 [报告]
发表于 2014-06-29 00:46 |只看该作者
文件夹cp不能用吗?

论坛徽章:
6
处女座
日期:2014-04-02 16:07:17酉鸡
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龙
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
32 [报告]
发表于 2014-06-30 15:23 |只看该作者
厉害,学习了

论坛徽章:
0
33 [报告]
发表于 2014-12-02 09:53 |只看该作者
一般的CP  不是CP  file1  file2嘛?    就说您这个脚本你怎么用?    没看懂...   回复 27# zooyo


   

论坛徽章:
0
34 [报告]
发表于 2016-07-11 01:01 |只看该作者
改天,放一个可以复制目录的版本

论坛徽章:
0
35 [报告]
发表于 2016-07-12 22:54 |只看该作者
cp.sh:

#!/bin/bash

if [ $# -eq 0 ];then
        exit 1
fi

PARAM_LIST=$*
PARAM_NUM=$#
TOTAL_SIZE=0
for((i = 0; i < PARAM_NUM - 1; i++))
do
        [ ! -r $1 ] && echo "Cannot read $1." && exit 1
        SIZE=`du -s $1 | awk '{print $1}'`
        ((TOTAL_SIZE = TOTAL_SIZE + SIZE))
        shift
done
#现在$1只剩下dst path了。
TARGET=$1
echo TARGET=$TARGET
START_TIME=`date +%s.%N`
#echo START_TIME=$START_TIME
cp -a $PARAM_LIST &
echo -ne "Total size: $TOTAL_SIZE KB - %"
while true
do
        LEN_PERCENT=${#PERCENT}        #${#PERCENT}计算PERCENT的长度,即字符个数
        for((i = 0; i <= LEN_PERCENT; i++))
        do
                echo -ne "\b"                                        #根据PERCENT位数退回n个空格
        done
        COPIED=`du -s $TARGET | awk '{print $1}'`
        ((PERCENT = COPIED * 100 / TOTAL_SIZE))
        echo -ne "$PERCENT%"                                        #不打印回车
        ((PERCENT == 100)) && END_TIME=`date +%s.%N` && break      #100%时,记录结束时间,退出循环
        sleep 0.1
done
MB_SECOND=`echo $TOTAL_SIZE/1024/\($END_TIME-$START_TIME\)|bc`
echo " - SPEED: $MB_SECOND MB/s"


可以复制目录了,但这脚本还有一个bug, 复制多个文件到某个文件夹中时,计算已拷贝的文件大小时会出错,导致百分比>100%, 请高手继续修正一下:    比如./cp.sh 1.txt 2.txt ./dir/

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
36 [报告]
发表于 2016-07-13 10:34 |只看该作者
过来学习了。大神好牛B

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
37 [报告]
发表于 2016-07-13 11:14 |只看该作者
zooyo 发表于 2011-09-04 10:58



有个问题,j那段for循环 不理解 for((j=i;j<=99;j=$j+2));do echo -n " ";done  为何这里j=i 而不是j=$i

论坛徽章:
0
38 [报告]
发表于 2018-05-07 19:53 |只看该作者
也整个文件夹的啊~~~大神

论坛徽章:
0
39 [报告]
发表于 2018-05-07 19:53 |只看该作者
也整个文件夹的啊~~~大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP