Linux下关于find命令的总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下关于find命令的总结相关的知识,希望对你有一定的参考价值。
Q1:为什么要学会使用find?
每个操作系统都由无数的文件组成,Linux更是如此。Linux下,有一个统一的思想:一切皆文件。在windows我们可以通过文件查找功能实现对文件的查找,通过后缀的不同来确定同名文件中,我们最终要找的文件是哪个。而Linux下我们就不能通过图形化界面的文件查找功能得到我们想要的,需要借助find指令,并且Linux下的文件是没有后缀的,所以一个同名的文件可以通过其文件属性的不同区分,也有可能一个同名文件在不同的目录下。所以当我们需要对特定文件进行修改或者维护时,我们就需要借助搜寻指令去找到这个文件。
Q2:Linux下是不是只有一种查找指令?
当然不是。
linux下的查找指令有,whereis,which,locate和find,那么来看看他们的区别。
which:寻找当前PATH下的需要寻找的指令路径
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的
指令名称
whereis:寻找特定文件(速度快,利用数据库搜寻)
-b :查找特定二进制文件
-m:找说明文件在manual路径下的文件
-s:只找source来源文件
-u:查找不含以上三种的文件
locate:寻找文件(利用数据库),有可能一个文件刚刚建立,无法找到;或者已经被删除的文件依然被找到了,都跟数据库的更新有关。
#locate
-i //查找文件的时候不区分大小写 比如:locate –i passwd
-n //只显示查找结果的前N行 比如:locate -n 5 passwd
find:功能强大,在目录下搜索文件,并可以执行指定操作,提供了相当多的查找条件(搜寻硬盘)
Q3:find指令用法总结
find [指定查找目录] [查找规则] [查找完后执行的action]
【查找规则】:
(1)根据文件名查找
-name:根据文件名查找
-iname:根据文件名查找(不区分大小写)
(* :通配任意字符; ?:通配任意单个字符; []:通配方括号中的任意一个字符)
(2)根据文件所属用户和组群查找
-user :根据文件所属用户查找
-group:根据文件所属组群查找
(3)根据文件的uid和gid来查找
(GID为GroupId,即组ID,用来标识用户组的唯一标识符)
(UID为UserId,即用户ID,用来标识每个用户的唯一标示符)
-uid:根据文件所属用户id查找
-gid:根据文件所属组群id查找
(4)-a (and) -o (or) -not (!)来查找
-a:连接两个不同的条件,条件一成立“且”条件二成立,的文件查找
-o:连接两个不同的条件,条件一成立“或”条件二成立,的文件查找
-not:对条件取反进行查找
(5)根据时间戳的相关属性查找
-atime:最近读取时间(天)
-ctime:最近状态更改时间(天)
-mtme: 最近内容更改时间(天)
-amin: 最近读取时间(分钟)
-cmin: 最近状态更改时间(分钟)
#find /tmp –atime +5 //表示查找在五天内没有访问过的文件
#find /tmp -atime -5 //表示查找在五天内访问过的文件
(6)根据文件类型查找
-type
f // 普通文件
d //目录文件
l //链接文件
b //块设备文件
c //字符设备文件
p //管道文件
s //socket文件
(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
//表示必须所有类别用户都满足有写权限
(9)-nouser and -nogroup
#find / -nogroup –a –nouser
//在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)
【查找完执行的action】
# -print //默认情况下的动作
# -ls //查找到后用ls 显示出来
# -ok [commend] //查找后执行命令的时候询问用户是否要执行
# -exec [commend] //查找后执行命令的时候不询问用户,直接执行
查找5天前的文件并执行删除
(ps:{} 用来替代前面rm/chomd 777 所要修改的文件,\;是将;转义不让 -exec去解读)
本文出自 “momo就是辣么萌” 博客,请务必保留此出处http://momo462.blog.51cto.com/10138434/1775237
以上是关于Linux下关于find命令的总结的主要内容,如果未能解决你的问题,请参考以下文章