巴中热线

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 534|回复: 0

[电脑网络] Linux下查找文件find命令用法详解 删除指定天数前日志文件

[复制链接]
发表于 2018-11-13 15:36:51 | 显示全部楼层 |阅读模式

注册巴中热线论坛,交好友享优惠,衣食住行吃喝玩乐尽在 BZHOT.com

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Linux下查找文件的命令有两个:locate 和 find
locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:

locate
-i    //查找文件的时候不区分大小写,比如:locate –i passwd
-n    //只显示查找结果的前N行,比如:locate -n 5 passwd

命令格式 :
find [指定查找目录] [查找规则] [查找完后执行的action]

1)根据文件名查找
-name    //根据文件名查找(精确查找)
-iname    //根据文件名查找,但是不区分大小写

//查找/etc /tmp /root三个目录下的passwd文件
find /etc /tmp /root -name passwd

//查找/etc /tmp目录下passwd开头的文件
find /etc /tmp -name "passwd?"

//查找/etc目录下no开头的文件
find /etc/ -name "no*.conf"

* 表示 通配任意的多个字符
? 表示 通配任意的单个字符
[ ]表示 通配括号里面的任意一个字符

2)根据文件所属用户和组来查找文件
-user    //根据属主来查找文件
-group    //根据属组来查找文件


3)根据uid 和 gid来查找用户

//查找uid是500 的文件
find  /tmp  -uid  500

//查找gid是1000的文件
find  /tmp  -gid  1000


4)-a  and  -o  and  –not的使用

//查找/etc目录下所有的conf文件,并用户权限是root
find /etc -name "*.conf" -a -user root

//查找/etc目录下所有的conf文件,并用户权限不是ops
find /etc -name "*.conf" -not -user ops

-a 连接两个不同的条件(两个条件必须同时满足)
-o 连接两个不同的条件(两个条件满足其一即可)
-not 对条件取反的


5)根据文件时间戳的相关属性来查找文件
//查看etc目录下asound.conf文件的创建,访问,修改时间
stat /etc/asound.conf

atime  //最近一次访问时间
mtime  //最近一次内容修改时间
ctime  //最近一次属性修改时间
* atime的单位指的是“天”,amin的单位是分钟

//表示查找在五天内没有访问过的文件(也就是5天前天没访问的文件)
find  /tmp  –atime  +5

//表示查找在五天内访问过的文件
find  /tmp  -atime  -5

//清理日志的时候,一般使用的是最近一次内容修改时间
find -mtime +30 -name "*[0-9]*" -exec rm {} \;


6)根据文件类型来查找文件
-type
f  // 普通文件
d  //目录文件
l  //链接文件
b  //块设备文件
c  //字符设备文件
p  //管道文件
s  //socket文件

//查找在/tmp 目录下socket文件
find /tmp -type s


7)根据大小来查找文件
-size
find /tmp -size  2M    //查找在/tmp 目录下等于2M的文件
find /tmp -size +2M    //查找在/tmp 目录下大于2M的文件
find /tmp -size -2M    //查找在/tmp 目录下小于2M的文件


8)根据文件权限查找文件
-perm
find /tmp -perm 755     //查找在/tmp目录下权限是755的文件   
find /tmp -perm +222    //表示只要有一类用户(属主,属组,其他)的匹配写权限就行   
find /tmp -perm -222    //表示必须所有类别用户都满足有写权限


//删除查找到的超过30天没有访问过文件  
find  /tmp  -atime  +30  –exec rm –rf  {}  \;

删除文件命令:
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;

实例:
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

说明:
将/opt/soft/log/目录下所有30天前带".log"的文件删除。

具体参数说明:
find:linux的查找命令,用户查找指定条件的文件;
/opt/soft/log/:想要进行清理的任意目录;
-mtime:标准语句写法;
+30:查找30天前的文件,这里用数字代表天数;
"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} \; :固定写法,一对大括号+空格+\+;



上一篇:Linux查看文件和文件夹大小 按条件删除日志
下一篇:linux系统如何修改挂载mount共享文件夹的读写权限
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

巴中热线 - 精彩推荐上一条 /1 下一条

快速回复 返回顶部 返回列表