本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧。

环境: Ubuntu下采用shell脚本实现

案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名。通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为数字,则根据数字的大小统计该文件夹内文件在各个数据段的数量。

1、这里写一个函数,实现对文件夹内所有文件名的读取,采用的方法是递归!#!/bin/bash

#folder="./test"

function readfile ()

{

#这里`为esc下面的按键符号

for file in `ls $1`

do

#这里的-d表示是一个directory,即目录/子文件夹

if [ -d $1"/"$file ]

then

#如果子文件夹则递归

readfile $1"/"$file

else

#否则就能够读取该文件的地址

echo $1"/"$file

#读取该文件的文件名,basename是提取文件名的关键字

echo `basename $file`

fi

done

}

#函数定义结束,这里用来运行函数

folder="./test"

readfile $folder

2、这里实验了初始化变量和变量赋值#!/bin/bash

a=002

#打印a的值

echo $a

#注意这里赋初始值不能有空格

b=20

c=30

#注意这里[]和符号及字母之间一定要有空格,否则错误!

#这里shell脚本的逻辑运算-a表示与运算,-o表示或运算,!表示否运算

#-lt表示小于,-gt表示大于,-eq表示等于,-ne表示不等于,-le表示小于等于,-ge表示大于等于

if [ $a -lt $b -a $a -gt $c ]

then

#这里赋值注意两个括号,等号两边不能留有空隙

a=$(($a + 2))

a=$(($a + 1))

a=$(($a+ 4))

echo "hehe!"

elif [ $a -lt $b ]

then

echo $(($a + 100))

a=$(($a + 12))

echo "a is:"$a

echo "hello world!"

else

echo "i dont know"

fi

3、综合实验#!/bin/bash

#echo "start..."

#define a function to read all the files in the folder

#赋初始值

a10=0

a20=0

a30=0

a40=0

a50=0

a60=0

a70=0

#定义读取文件名的函数

function readfile ()

{

for file in `ls $1`

do

if [ -d $1"/"$file ]

then

#这里采用递归的方法来读取文件名

readfile $1"/"$file

else

#这一步使得temp变量获得文件名

temp=`basename $file`

#echo $temp

#这里需要注意##*。。表示删除字符串最右边。。及其左边所有内容

var=${temp##*M}

#%。。*表示删除字符串左边的。。及其右边的内容!两个%%则表示最左边

var1=${var%.*}

var2=${var1%a*}

var3=${var2%b*}

var4=${var3%c*}

var5=${var4%d*}

var6=${var5%e*}

var7=${var6%f*}

var8=${var7%g*}

#echo $var8

#if 和括号之间必须有空格

if [ $var8 -le 10 ]

then

a10=$(($a10 + 1))

elif [ $var8 -gt 10 -a $var8 -le 20 ]

then

a20=$(($a20 + 1))

elif [ $var8 -gt 20 -a $var8 -le 30 ]

then

a30=$(($a30 + 1))

elif [ $var8 -gt 30 -a $var8 -le 40 ]

then

a40=$(($a40 + 1))

elif [ $var8 -gt 40 -a $var8 -le 50 ]

then

a50=$(($a50 + 1))

elif [ $var8 -gt 50 -a $var8 -le 60 ]

then

a60=$(($a60 + 1))

else

a70=$(($a70 + 1))

fi

fi

#echo $var8

done

#echo $a40

}

folder="/home/cc/Age/data/MORPH"

readfile $folder

#打印出每个数字段的个数

echo $a10

echo $a20

echo $a30

echo $a40

echo $a50

echo $a60

echo $a70

这里将该脚本保存为1.sh,在执行的时候如果用指令sh 1.sh则会报里面内容或者语法出错。笔者为此迷惑了很久,最终查找资料找到的解决办法是:

a.首先,使sh文件为可执行文件,命令: chmod +x 1.sh;

b.然后在终端直接执行./1.sh就可以执行。

想要了解更多关于Linux开发方面内容的小伙伴,请关注扣丁学堂Linux培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的Linux讲师为您指导,此外扣丁学堂老师精心推出的Linux视频教程定能让你快速掌握Linux从入门到精通开发实战技能。

Pyhon基础课程:https://ke.qq.com/course/327534?flowToken=1008607 【扫码进入Python全栈开发免费公开课】

H5基础课程:https://ke.qq.com/course/320523?flowToken=1008606【扫码进入HTML5前端开发VIP免费公开课】

注:点击(了解更多)进入课程直播间

linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...相关推荐

  1. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  2. linux脚本调用db2存储过程,LINUX定时执行含有DB2存储过程的SHELL脚本

    <LINUX定时执行含有DB2存储过程的SHELL脚本>由会员分享,可在线阅读,更多相关<LINUX定时执行含有DB2存储过程的SHELL脚本(6页珍藏版)>请在人人文库网上搜 ...

  3. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  4. 解决Linux下无法利用shell脚本启动conda虚拟环境问题

    解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...

  5. 利用shell脚本将json文件导入es

    现要将保存在一个目录下所有后缀名为json文件导入es集群,每个json文件中都按回车行分隔的json数据,下面是利用shell脚本完成此功能的代码. 在运行脚本之前,先创建索引. [root@nod ...

  6. SHELL脚本 遍历文件夹下所有文件以及子文件夹

    SHELL脚本 遍历文件夹下所有文件以及子文件夹 dir 要设置为局部变量 如果设置为全局变量 在func递归时传入的参数 会改变 dir的值,将导致之后的文件目录错误(为更改后的dir值) 当前目录 ...

  7. linux shell ddos木马,利用Shell 脚本解决DDOS攻击问题

    思路:主要利用 awk ,if结构,sort,uniq #!/bin/bash FilePath="access.log" awk '{print $1}' $FilePath | ...

  8. Shell脚本遍历指定网段的在线ip

    Shell脚本遍历指定网段存活 ip,检测其是否可以ping通- #!/bin/sh# IP 从 1 遍历到 254 for IP in {1..254};do# 指定网段,遍历 ip 列表 ping ...

  9. php批量替换文件内容,Shell脚本实现批量替换文件内容

    Shell脚本实现批量替换文件内容 今天同事发现内部服务器的硬盘空间不够了,上面有很多备份,我又不能删除,重新找了个320g的硬盘挂载了上,想以后shell脚本下的备份都转移到新硬盘上,给老硬盘腾出空 ...

最新文章

  1. vsphere6.7+Horizon7.8推送桌面遇到的一些问题
  2. 1.VMware安装3个ubuntu14.05
  3. 5个须警惕的数据库设计错误
  4. K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)
  5. 程序员必看!Android面试10大知识点总结宝典助你通关!年薪50W
  6. pmp中ram和raci的区别_【PMP知识点总结】采购流程、采购合同的类型、采购合同的条款...
  7. devops_您无法购买DevOps
  8. linux下卸载之前安装的qt4和qt5
  9. winform中HSrollbar如何控制thumb滑块的宽度呢
  10. TikZ从零开始(一)——实例之受力分析图绘制
  11. 42所双一流大学图书馆公众号
  12. 期刊评价查询+机器人领域期刊排名
  13. html字体颜色渐变色,css颜色渐变实例:css3文字颜色渐变的实现方法
  14. 记录每日习题(35)
  15. 计算机个人市场调查实验报告,市场调查实验报告(一)
  16. 蓝桥杯五4史丰收速算
  17. manjaro linux树莓派,manjaro
  18. TensorFlow在win10上安装--精简教程
  19. 朴素Bayes组合-集成分类器
  20. 安捷伦示波器DSO-X3034A进入不了测试界面是什么原因?

热门文章

  1. 关于笔记本蓝屏问题的解决方法
  2. 「亲身经历」如何避免离职员工带来的损失
  3. java -jar cvf_jar cvf 方式打包java web项目
  4. unity之代码修改Shader参数值
  5. python利用opencv去除图片logo_python 基于opencv去除图片阴影
  6. contos 7新手上路之四:使用与美化
  7. dos下查询网络内的计算机名,dos下查看ip_dos下查看ip地址_dos查看局域网ip_dos命令查本机ip的命令...
  8. matlab 三维图像投影,matlab – 3D平面上的三维灰度体积投影
  9. r5 5600g评测
  10. 计算机毕业设计SSM房屋中介管理信息系统【附源码数据库】