find介绍
find文件搜索命令,即通过不同的条件参数以达到自己所要找的目
标文件。所以说find也是一个搜索命令,说到此处有人就会说了grep也是
一个文件搜索命令,与find又有什么区别呢?有区别,而且区别大的很哦!
grep搜索文本内容的命令,即对一个文本里的所有字符查找搜索,而find
则是在某路径或是当前目录下搜索某个文件。说的这里我想大家都明白了
吧,grep和find是有着本质的区别,一个是对文件里面内容的搜索,一个
是对文件自身的搜索。
find格式用法
格式
find [options] [路径] [条件] [处理动作]
注意:中括号都是可选项,所以也可在当前目录下直接执行find,作用是
查找当前目录下的所有文件。
options:可选参数;
路径:用户要查找的路径,默认是当前目录下;
条件:查找目标文件设置条件,默认是当前路径下的所有文件;
处理动作:对于找到的文件作何处理,默认是显示在屏幕上;
1、查找条件:
查找条件可分为:名称查找、类型查找、文件大小查找以及时间查找和权
限的查找,下面分别一一介绍:
(1)名称查找:
-name:即-name参数后跟文件名称,指定查找某一文件,需注意的是此处
查找是此处查找支持文件名通配,且严格区分字符大小写。
如:查找/tmp下的所有以.log结尾的文件
-iname:用法与-name一样,只是不区分字符大小写了。
-user:后跟用户名,意思是查找以此用户为属主的文件。
-group:与-user用法一样,意思是查找包含此属组的文件。
如:在/tmp下查找以user为属组的文件
-nouser:查找所有没有属主的文件。
-nogroup:查找没有属组的文件。
-uid:查找属主为此uid的文件。
-gid:查找属组为此gid的文件。
注意:既然有-user、-group查找属主、属组的命令了,为什么还要-uid和
-gid查找属主和属组ID的命令呢?
下面举个例子说明一下:
例:先查看一下user的uid是501,然后将user用户删除掉,此时若想查找此
前删除的user用户新建的文件怎么找呢,-uid就派上用场了,如:
(2)类型查找:
类型查找顾名思义是根据文件的类型来查找,此处先列出字母所代表的都
是那类的文件类型:
-type:
f:普通文件
d:目录文件
b:块设备,即设备文件
c:字符设备
l:符号链接文件
p:命名管道
s:套接字
如:在/tmp下查找所有普通文件,目录文件(注意:是分开查找的哦!)
(3)文件大小查找:
以文件大小为条件对目标进行查找,格式 -size [+|-]#Unit 其中-size是
指定用于文件大小查找的关键字,+是大于,-是小于,#表示数值,Unit是
单位一般有K、M、G
如:查找/etc下所有大于1M的文件
(4)时间查找:
文件分为三个时间,即访问时间、修改时间和改变时间,这也就是文件的时
间戳:时间查找分为一天为单位和以分钟为单位
以天为单位:-atime [+|-]#、-mtime [+|-]#、-ctime [+|-]#
#:表示数值,意思是几天。
+:表示在#之前的时间。
-: 表示在#之内的时间。
若不加+、-号则表示在#天之内的时间。
以分钟为单位:-amin [+|-]#、-mmin [+|-]#、-cmin [+|-]#
用法与以天为单位的一样,所以在此就不多说了。
如:查找/tmp下一天之内的被访问过的文件和两天之前被访问过的文件:
(5)权限查找:
依据文件的属主、属组和其他三类的权限大小来查找目标文件格式: -perm[+|-]MODE
-perm:表示权限查找的关键字。
MODE:表示权限,一般用数字表示,不加+、-号时表示精确查找。
+MODE:表示属主、属组和其他,三类用户的任何一类用户的匹配读(r)、
写(w)、执行(x)三个权限的任何一个权限即可,通常用来查找
某类用户的某特定权限是否存在。
-MODE:表示每类用户指定权限位都匹配,才可满足查找条件。
如:查找/tmp下所有具有执行权限的文件:
找出/tmp下属主具有执行权限,属组具有写权限,其他用户具有读现象
例:找出/tmp下属主具有执行权限,属组具有写权限,其他用户具有读权限的文件:
(6)组合条件:
可以把多个条件以或、且、非的形式组合到一起:
-a:且,同时满足两边条件,默认可以不用写。
-o:或,两个满足其中一个条件。
-not或! :表示取反,即显示所有不满足条件的文件。
如:在/usr下找出以root为属主并且大于20M的文件:
2、处理动作
处理动作就是,将find的查找到的结果作何处理,此选项默认是将结果输
出到屏幕,对于大多数人此项一般不用,但有时也会将查找到的结果做另
外的处理,所以就用到以下介绍的选项了:
-print:打印在标准输出上。
ls:以长格式输出文件信息。
-exec {} \; :对查找到的文件执行指定的命令的操作,把查 找到的
所有文件一次性的传递给-exec所指定的命令。
-ok {} \; :和-exec一样只是-ok是交互式的操作。
| xargs:管道之后的xargs是把管道前面的字符串作为后面命令的参数执行。
如:将在/home下找到的文件以长格式显示出来:
find的总结
作为一个搜索文件的命令find确实没有辜负自身的价值,在find的查找条件
中几乎都能找到你想要搜索文件的条件。不过对于find来讲学好条件查找是
至关重要的,当然在这几个条件中也有常用,不常用之分。一般对于文件类
型的查找和文件名称的查找很常用,但文件大小的查找、权限和时间的查找
也不可忽视。总结而言学好find对于以后的linux学习会有很大的帮助哦!
本文出自 “千里之行始于足下” 博客,请务必保留此出处http://shlinuxdream.blog.51cto.com/8570170/1363967
原文:http://shlinuxdream.blog.51cto.com/8570170/1363967