版权声明: https://blog.csdn.net/qq_34246164/article/details/85011524
一 shell 脚本统计文件个数
count=`ls | wc -w`
echo $count
通过count的值就可以判断文件的个数了
判断指定目录下的文件个数:
count=`ls /home/data | wc -w`
echo $count
分析:
| 是管道描述符,将ls /home/data的输出作为wc -w指令的输入
wc 是命令,主要用来计算一个文件的行数、单词数、字符数
-w 表示统计单词数
-l 表示统计行数
-c 表示统计字节数
-m 表示统计字符数
二 shell 脚本统计当前目录下文件名包含特定文件字符的文件
FileNum=$(ls -l | grep .log | wc -l) #查找文件数量
三 shell 脚本判断文件的大小
#!/bin/sh
filename=media.log
filesize=`ls -l $filename | awk '{ print $5 }'`
maxsize=$((1024*10))
if [ $filesize -gt $maxsize ]
then
echo "$filesize > $maxsize"
mv media.log media"`date +%Y-%m-%d_%H:%M:%S`".log
else
echo "$filesize < $maxsize"
fi
各个字段的含义:
ls -l $outfile又不是cat $outfile,跟$outfile里面的内容有什么关系呢?
ls -l 是列出文件的详细信息,其中
第1字段是文件属性字段
第2字段是文件硬链接数或目录子目录数
第3字段是文件拥有者
第4字段文件拥有者所在的组
第5字段文件文件大小(以字节为单位)
第6字段文件创建月份
第7字段文件创建日期
第8字段文件创建时间
第9字段文件名 (如果是一个符号链接,那么会有一个 “->” 箭头符号,后面根一个它指向的文件)
四 shell 脚本自动控制文件夹下的文件数量
#!/bin/bash
ReservedNum=10 #保留文件数量
rm_file_dir='/home/sean/sean/rmfile' #需要删除文件的路径
cd $rm_file_dir #进入文件夹
RootDir=$(cd $(dirname $0); pwd) #当前文件路径
FileNum=$(ls -l | grep ^- | wc -l) #查找文件数量
OldFile=$(ls -rt *.dmp|head -1) #找出dmp最早文件
if [ $RootDir == $rm_file_dir ];then #判断所在目录是否正确
echo $RootDir
echo $rm_file_dir
while (($FileNum>$ReservedNum)) #文件数超过设置变量才执行
do
echo "Delete File:"$RootDir'/'$OldFile #打印要删除的文件名称
rm -f $RootDir'/'$OldFile #删除文件
let "FileNum--" #变量自减操作
OldFile=$(ls -rt *.dmp|head -1) #更新dmp最早文件
done
else
echo "error file path " #所在目录不对打印出路径错误
fi
上面的代码只能控制一个文件夹下的所有的文件的数量为一个特定值,不能限制包含特定字符文件的数量,比如后缀为.log的文件。
如果,想要控制包含特定字符文件的书数量,需要将其中的代码进行更改,如下:
FileNum=$(ls -l | grep ^- | wc -l) #查找文件数量
改为:
FileNum=$(ls -l | grep .log| wc -l) #查找文件数量