Linux环境下通过Shell实现文件目录复制进度监控

简介: Linux环境 Shell脚本 FOR循环

需求:Linux环境下,有一目录A下存放某类文件N个,现需将该目录A下文件复制到新建目录B中,由于文件数量较大,需通过Shell监控复制进度。

Shell实现:
方法1:while无限循环(目的目录下无限期执行)

#!/bin/bash
#
while :
do 
    CountN=$(ls -lR|grep "^-"|wc -l)
    echo -e "已复制文件数;$CountN"
    sleep 10
done

方法2:while无限循环(指定目录参数与停止条件)

#!/bin/bash
#
sdir=$1 #原始目录
ddir=$2    #目的目录
while : #while无限循环用":"
do 
    SN=$(ls -lR $sdir|grep "^-"|wc -l) #原始目录下文件总数
    DN=$(ls -lR $ddir|grep "^-"|wc -l) #目的目录下文件总数
    R=$(awk 'BEGIN{printf "%.2f%\n",('$DN'/'$SN')*100}') #完成比例
    echo -e "总文件数:SN  已复制文件数;DN 完成率:R"
    if [ $DN -eq $SN ] #如果文件已传完,则退出循环
    then
        echo -e "传输完成!"
        break
    else
        sleep 10 #间隔时间,单位秒
    fi
done

方法3,采用for条件循环(传输完成自动停止)

#!/bin/bash
#
sdir=$1    #参数,原始目录
ddir=$2    #参数,目的目录
SN=$(ls -lR $1|grep "^-"|wc -l) #原始目录下文件总数
DN=$(ls -lR $2|grep "^-"|wc -l) #目的目录下文件总数
for (((i=DN;i<=SN;i=DN)) #如果文件已传完,则退出循环
do 
    DN=$(ls -lR $2|grep "^-"|wc -l) #目的路径下文件总数
    R=$(awk 'BEGIN{printf "%.2f%\n",('$DN1'/'$SN1')*100}')    #完成比例
    echo -e "总文件数:$SN  已复制文件数;$DN 完成率:$R"
    sleep 10 #间隔时间,单位秒
done
echo -e "传输完成!"

扩展

for循环:

形式1:条件循环
for ((初始值;循环控制条件;变量变化))
do
程序
done

其中:
1)初始值:在循环开始时,需要给某个变量赋予初始值,如 i=1。
2)循环控制条件:用于指定变量循环的次数,如 i<=100,则只要 i 的值小于等于 100,循环就会继续。
3)变量变化:每次循环之后,变量该如何变化,如 i=i+1,代表每次循环之后,变量的值都加 1。

形式2:数值性循环
for 变量 in 值1 值2 值3…
do
程序
done

其中:
环的次数取决于in后面值的个数(以空格分隔),有几个值就循环几次,并且每次循环都把值赋予变量。 in 后面有三个值,for 会循环三次,第一次循环会把值1赋予变量,第二次循环会把值2赋予变量,以此类推。

目录
相关文章
|
12天前
|
Shell
Shell 文件包含
10月更文挑战第5天
27 4
|
28天前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
28天前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
11天前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
36 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
16天前
|
存储 安全 Shell
上传漏洞利用时,没有回显上传目录怎么连接shell
上传漏洞利用时,没有回显上传目录怎么连接shell
|
18天前
|
Linux iOS开发 MacOS
MacOS环境-手写操作系统-35-Shell控制台
MacOS环境-手写操作系统-35-Shell控制台
16 2
|
28天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
1月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
87 2
|
15天前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
12 0
|
1月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。