【Linux】find命令用法

一、概述

格式:find [path] [expression] [-exec command]

以上介绍并非find命令标准格式,而是根据我自身经验而采用的一种比较常用格式。

二、详解

[path]:该选项是你希望搜索文件的文件夹路径,如果该目录下有子文件夹会自动递归搜索;

[expression]:该选项在find命令的man手册中叫做TESTS,其实就是用来设置你搜索的过滤选项,下面列出的是几个常用选项:

                           注:+(/-)num :大于(/小于)num;

                          -name 文件名:按文件名查找,支持通配符;

                           -iname 文件名:和-name一样,不过文件名忽略大小写;

                           -user 用户名:根据文件所属用户用户名查找;

                           -group 组名:根据文件所属组组名查找;

                           -uid uid:根据文件所属用户uid查找;

                           -gid gid:根据文件所属组的gid查找;

                           -a:逻辑连接符(『注』逻辑判断符会从左边往右的判断,对于-a来说,如果左边条件不满足的话就不会执行右边 的条件),表示"和",前后连接两个不同的查找选项,eg. find /tmp -name "*.sh" -a -name "*.so";

                           -o:逻辑连接符,表示"或",用法同-a;

                           -not:逻辑连接符,表示“异或”,用法同-a;

                           -atime(amin) +(/-)n:查找n天(/分钟)之前(/内)访问的文件,eg find /tmp -atime +3;

                           -mtime(mmin) +(/-)n:查找n天(/分钟)之前(/内)修改的文件,用法同-atime;

                           -ctime(/cmin) +(/-)n:查找n天(/分钟)之前(/内)创建的文件,用法同-atime;

                           -type  f    // 普通文件:按文件类型查找文件;

                                     d    //目录文件

                                      l    //链接文件

                                      b   //块设备文件

                                      c    //字符设备文件

                                      p    //管道文件

                                      s    //socket文件

                             -size +(/-)n[k,M,G //单位,对应kb,mb,gb]:按文件大小查找;

                             -perm 数字权限符:按权限查找,eg. find /tmp -perm 744;

                             -nouser:查找不属于任何用户的文件;

                             -nogroup:查找不属于任何组的文件;

                             -path [path]  -a  -prune -o  [其他过滤条件]:在查找时排除path目录,『注意』path后面不能有/;

【可选】

[-exec command]:用于在find查找到相关文件后执行的command,在command的参数中用{}代替查找到的文件,eg. find /tmp -name "*.sh" -exec cp {} ~/{}.bak

三、扩展

1、如果find命令查找到的文件太多,则用-exec处理查找到的文件就会处理不了,这时可以配合xargs命令使用,利用xargs命令里的-n选项来分批处理查找到的文件,eg. find ./temp -name "*.sh" | xargs -n 10 mv {} {}.bak

2、find命令同locate的区别,locate是查找索引数据库,速度更快,但是数据库里的数据不能及时更新,find直接查找文件,速度慢,但是能保证是最新的文件。可以使用updatedb手动更新locate索引数据库。

                           

                          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值