首页 > 其他 > 详细

脚本案列.

时间:2021-04-28 22:17:33      阅读:24      评论:0      收藏:0      [点我收藏+]

1、题目要求

找到/123目录下所有后缀名为.txt的文件

  1. 批量修改.txt为.txt.bak
  2. 把所有.bak文件打包压缩为123.tar.gz
  3. 批量还原文件的名字,即把增加的.bak再删除

核心要点

  • find用来查找所有.txt文件
  • tar打包一堆文件
  • 还原文件名用for循环

参考答案

#!/bin/bash
find /123/ -type f -name "*.txt" > /tmp/txt.list 
for f in `cat /tmp/txt.list`
do
    mv $f  $f.bak
done

#find /123/ -type f -name *.txt |xargs -i mv {} {}.bak 
#find /123/ -type f -name *.txt -exec mv {} {}.bak \;

for f in `cat /tmp/txt.list`
do
    echo $f.bak
done > /tmp/txt.bak.list 

tar -czvf 123.tar.gz `cat /tmp/txt.bak.list |xargs `

for f in `cat /tmp/txt.list`
do 
    mv $f.bak $f
done 

2、题目要求

假如需要每小时都去执行一个脚本。在脚本中实现这样的功能,当时间是0点和12点时,需要将目录/data/log/下的文件全部清空,

注意只能清空文件内容而不能删除文件。而其他时间只需要统计一下每个文件的大小,一个文件一行,输出到一个按日期和时间为名字的日志里。

需要考虑/data/log/目录下的二级、三级、…  等子目录里面的文件。

参考答案

#!/bin/bash
dir=/tmp/log_stat
t=`date +%d%H`
t1=`date +%H`
logdir=/data/log

[ -d $dir ] || mkdir $dir
[ -f $dir/$t.log ] && rm -f $dir/$t.log

if [ $t == "00" -o $t1 == "12" ]
then
    for f in `find $logdir/ -type f`
    do
    > $f
    done
else
    for f in `find $logdir/ -type f`
    do
    du -sh $f >> $dir/$t.log
    done
fi

案例  :

先创建   目录   

# mkdir -p /data/log/

再执行脚本

3、题目要求

写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。

参考答案

#!/bin/bash
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
    echo "请输入一个纯数字."
    continue
    fi
    if echo $n |grep -qi end
    then
    exit
    fi
    n1=`echo $n|sed s/[0-9]//g`
    if [ -n "$n1" ]
    then
    echo "请输入一个纯数字."
        continue
    else
    echo "你输入的数字是: $n"
        continue
    fi
done

 

脚本案列.

原文:https://www.cnblogs.com/yj-8023/p/14715507.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!