脚本:
1.在/qfedu目录中批量创建10个文件,文件名由10个随机小写字母+固定字符组成.固定字符 为_html, 如:ahdkhzhdld_html。
2.将上述目录中的文件重命名,将 html 换成 HTML。
3.仅保留上述目录中最新的文件,其它文件都删除掉。
感觉自己写得太繁杂。。。
#!/bin/bash#定义一个随机生成10个字母的函数function genLetters(){letters=qwertyuiopasdfghjklzxcvbnmname=for i in {1..10}donum=$[ $RANDOM%26 ]one_letters=${letters:$num:1} #变量切片name=$name$one_lettersdoneecho $name}echo \"正在创建文件...\"sleep 2#开始创建文件for j in {1..10}dotouch /qfedu/$(genLetters)_htmldoneecho \"文件创建完毕!结果如下:\"ls /qfedu/ #直接展示第一步结果sleep 5echo \"开始重命名文件....\"sleep 1find /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_namedoneecho \"重命名完毕!结果如下:\"ls /qfedu/ #直接展示第二步结果sleep 5echo \"正在删除旧文件...\"sleep 1ls -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`dofile_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\"doneecho \"旧文件删除完毕!结果如下:\"ls /qfedu/ #直接展示第三步结果