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