zoukankan      html  css  js  c++  java
  • 【shell实例】文件操作

    1、【xx大小文件】查找当前目录下>500M的文件,并将文件名存入文件 file_list中,并统计个数

    # 解析
        #【-type b/d/c/p/l/f】        查找块设备、目录、字符设备、管道、符号链接、普通文件
        #【| tee file_list】        将find查找的数据读取出来,存到文件 file_list 中
        #【wc -l】        统计行数
    find ./ -size +500M -type f | tee file_list | wc -l

    2、【以xx开头的文件】在当前目录下找到10个以yy开头的文件,然后把这些文件的第一行保存到文件new中

    # 解析
        #【这里的引号是tab键上方的~的引号】    `find ./ -type f -name "yy*" |head -n 10`        
            #【先查找当前目录下以 yy开头的文件】    find ./ -type f -name "yy*"   
            #【取出查到的文件前10个】    |head -n 10   
        #【将文件的第一行输出】    sed -n '1p' $filename   
    #!/bin/bash for filename in `find ./ -type f -name "yy*" |head -n 10` do sed -n '1p' $filename >> new done

    3、查找文件中最后一次清洗时间 

    '''    文件内容如下
        [1info][2017]
        [INFO2] [2017-06-12 17:34:02][streaming]数据文件清洗-->开始
        [INFO3] [2017-06-13 17:34:02][streaming]数据文件清洗-->开始
        [infoend] [dsds]
    '''
    #【awk -F '[' '{print $3}'】
        #【-F '['】        将查找出的内容以 [ 为分割
        #【{print $3}】    分割之后打印出第3个值,即 
            # 2017-06-12 17:34:02]
            # 2017-06-13 17:34:02]
        #【END {print $1}】        获取以上最后一行,打印出分割后的第一个值,即 2017-06-13 17:34:02
        
    cat awk.log |grep '数据文件清洗-->开始' |awk -F '[' '{print $3}' |awk -F ']' 'END {print $1}'

     4、每隔10分钟监控一次,监控/usr下如果大于2G,发邮件给管理员

    #!/bin/bash
    while true
    do
        sleep 600    # 每隔10s执行一次
        n=$(du -s /usr | cut -f1)
        if [ $n -gt 204800 ]
        then
            # mail -s test 15150538243@139.com         发送一封名为 test的空信给后面邮箱
            mail -s "greater" filwsyl@gmail.com < ~/filename #将文件filename的内容发送出去。
        fi
    done

     5、某个目录下的文件后缀改为.bat,再将该目录打包(重命名为以"当前时间.tar")放在某个目录

    #!/bin/bash
    for file in $(ls $1)    # $1 第一个传入的参数
    do
     new_file=${file%.*}.bat    # ${file%.*} 取出文件名,不带后缀【${file%} 取出文件名,带后缀】
     echo $new_file
     mv ./$1/$file ./$1/$new_file
     tmp=$(date +%Y%m%d%H%M%S)    # date 和 +%Y%m%d%H%M%S 之间要有空格
     tar cvf ./$tmp.tar ./$1
    done

     6、删除当前目录下大小为0的文件

    #/bin/bash
    b=0
    for fileName in `ls`
    do
    if test -f $fileName;then
     a=$(ls -l $fileName |awk '{print $5}')
     if [ $a == $b ];then
      echo $fileName >> rm_file.log
      rm $fileName
     fi
    fi
    done
  • 相关阅读:
    代码格式化[转]
    ASP.NET错误大杂烩
    Web考勤管理系统 .net 2005 开发
    Ftp 类
    c#中Split等分割字符串的几种方法
    强大的firebug 使用 介绍
    一页面多个文本框回车提交不同事件问题解决
    Ajax电子书下载 发现的好东东贴上了
    编程技术书籍[转]
    推荐下权威的《IT十年经典书系列》1打
  • 原文地址:https://www.cnblogs.com/bxbyy/p/7797783.html
Copyright © 2011-2022 走看看