Linux:脚本的基础练习

脚本:
1.在/fed目录中批量创建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 /fed/$(genLetters)_html
done
echo "文件创建完毕!结果如下:"
ls /fed/          #直接展示第一步结果
sleep 5

echo "开始重命名文件...."
sleep 1

find /fed/ -name "*html" > /fed/oldname #将旧文件名写入文件
find /fed/ -name "*html"|sed 's/html/HTML/g' > /fed/newname  #将新文件名写入文件
#开始重命名
for i in {1..10}
do
    #使用awk每次各读取一个文件名
    old_name=`awk 'NR=='$i'{print $1}' /fed/oldname`
    new_name=`awk 'NR=='$i'{print $1}' /fed/newname`
    mv $old_name $new_name
done
echo "重命名完毕!结果如下:"
ls  /fed/          #直接展示第二步结果
sleep 5

echo "正在删除旧文件..."
sleep 1

ls -l /fed/|awk 'NR!=1{print $NF}' >/tmp/all_file_name #将所有文件名写入新的文件夹
total=`cat /tmp/all_file_name |wc -l` #统计一个有多少个文件

newestFile=/fed/newname #这个是最新的文件,因为他在上面的循环中最后被调用
for i in `seq 1 $total`
do
    file_name=/fed/`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 /fed/          #直接展示第三步结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值