Linux:一道作业题
2020-08-08 14:23
162 查看
脚本:
1.在/qfedu目录中批量创建10个文件,文件名由10个随机小写字母+固定字符组成.固定字符 为_html, 如:ahdkhzhdld_html。
2.将上述目录中的文件重命名,将 html 换成 HTML。
3.仅保留上述目录中最新的文件,其它文件都删除掉。
感觉自己写得太繁杂。。。
#!/bin/bash #定义一个随机生成10个字母的函数 function genLetters(){ letters=qwertyuiopasdfghjklzxcvbnm name= for i in {1..10} do num=$[ $RANDOM%26 ] one_letters=${letters:$num:1} #变量切片 name=$name$one_letters done echo $name } echo "正在创建文件..." sleep 2 #开始创建文件 for j in {1..10} do touch /qfedu/$(genLetters)_html done echo "文件创建完毕!结果如下:" ls /qfedu/ #直接展示第一步结果 sleep 5 echo "开始重命名文件...." sleep 1 find /qfedu/ -name "*html" > /qfedu/oldname #将旧文件名写入文件 find /qfedu/ -name "*html"|sed 's/html/HTML/g' > /qfedu/newname #将新文件名写入文件 #开始重命名 for i in {1..10} do #使用awk每次各读取一个文件名 old_name=`awk 'NR=='$i'{print $1}' /qfedu/oldname` new_name=`awk 'NR=='$i'{print $1}' /qfedu/newname` mv $old_name $new_name done echo "重命名完毕!结果如下:" ls /qfedu/ #直接展示第二步结果 sleep 5 echo "正在删除旧文件..." sleep 1 ls -l /qfedu/|awk 'NR!=1{print $NF}' >/tmp/all_file_name #将所有文件名写入新的文件夹 total=`cat /tmp/all_file_name |wc -l` #统计一个有多少个文件 newestFile=/qfedu/newname #这个是最新的文件,因为他在上面的循环中最后被调用 for i in `seq 1 $total` do file_name=/qfedu/`sed -n "${i}p" /tmp/all_file_name` #逐个取出文件名 test $file_name -ot $newestFile #检查是否比最新的文件要旧 result=`echo $?` #如果返回0,则比最新的文件要旧 [ $result -eq 0 ]&& rm -rf $file_name && echo "已删除$file_name" done echo "旧文件删除完毕!结果如下:" ls /qfedu/ #直接展示第三步结果
相关文章推荐
- linux:一道作业题(改进版本)
- linux运维实战练习-2015年9月5日课程作业
- 关于linux系统调用fork()的一道面试题
- Linux操作系统作业
- linux 第六周作业
- linux下模拟shell的C程序--操作系统作业
- 20165311 预备作业3 Linux安装及学习
- 马哥linux第8周作业
- linux下fork一道面试题目
- linux学习入门1——bash命令基本操作(linuxcast.net)(bash部分快捷键、uname、history、通配符、切换用户、作业管理(前台、后台运行,暂停等操作))
- Linux作业(4)-02
- 20165209 预备作业3 Linux安装及学习
- linux运维学习:第一周作业
- 马哥2016全新Linux+Python高端运维班第四周作业
- Linux-C基础知识学习:C语言作业-将5个学生成绩保存在一个数组中,单独实现一个计算平均成绩的average函数, 在main函数中获取该函数返回的平均值,并打印。
- 马哥2016全新Linux+Python高端运维班第四周作业
- linux的作业与进程的区别
- linux 作业控制
- 马哥2016全新Linux+Python高端运维班第九周作业
- 汇编语言练习--帮机械专业同学做的一道作业