忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
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
发表于 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
发表于 2014-06-30 15:23 |显示全部楼层
厉害,学习了

论坛徽章:
0
发表于 2014-12-02 09:53 |显示全部楼层
一般的CP  不是CP  file1  file2嘛?    就说您这个脚本你怎么用?    没看懂...   回复 27# zooyo


   

论坛徽章:
0
发表于 2016-07-11 01:01 |显示全部楼层
改天,放一个可以复制目录的版本

论坛徽章:
0
发表于 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
发表于 2016-07-13 10:34 |显示全部楼层
过来学习了。大神好牛B

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
发表于 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
发表于 2018-05-07 19:53 |显示全部楼层
也整个文件夹的啊~~~大神

论坛徽章:
0
发表于 2018-05-07 19:53 |显示全部楼层
也整个文件夹的啊~~~大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

第67期:Neo4j图数据库平台架构最佳实践
【微学堂】10月18日 20:00(周四)

当下,数据的规模和类型每时每刻都在呈几何级数的增长,仅能够管理大量的数据是不够的,关键是能从海量数据中发掘出有用的信息,特别是数据之间的关联,能高效存储和处理数据之间关联的新型数据库为图数据库。 本讲座将介绍Neo4j图数据库的基本概念、设计特点、架构和经典应用场景实战分享。

进入课堂>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP