【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
原文地址:https://www.cnblogs.com/bxbyy/p/7797783.html