在介绍搜索命令之前,我们要先明确一个小的概念,那就是在Linux中首先需要考虑的并不是怎么搜索比较方便,而是能不能尽量不用搜索。在创建文件的时候,应该将文件的目录结构规划的很好,方便进行管理。就像东西不要乱放,这样我们就不需要很多时间去找,去搜索。搜索会占用大量的系统资源,
一般不建议使用。好,接下来就开始文件搜索命令的介绍。
find命令
功能描述:文件搜索
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
注:常用的匹配条件(筛选条件):文件名称,文件大小,时间属性
find是一个非常复杂的命令,原因在于它的选项十分繁多,由于这里只是简单介绍一下常用的一些命令,所以一些简单的日常操作就能够得以实现了。
第一个系列的选项
搜索条件选项
- -name——通过文件名来搜索。
同时,这里的搜索是精准的搜索。什么是精准的搜索呢?就是你输入的文件名是什么,所查找到的文件名就必须是什么,多一个少一个字符都不行。比如Windows中的搜索就是模糊搜索,而Linux则是精准搜索。
问题又来了,如果我想要在Linux中实现模糊搜索,有没有办法呢?当然有。可以使用**扩住所搜索的文件名,*代表任意字符,这样就可以搜索到文件名中含有该字符串的文件了。
举一反三, 文件名 *则可以搜索到以该文件名字符串为头的文件。
如果你记得开头是abc,后面还有3个字符,但是不记得后面的字符是什么了,可以使用?来匹配单个字符,用abc???即可搜索到。
总结来说, *号可以匹配任意字符,?号只可以匹配单个字符。
(-iname选项,可以不区分带小写的搜索文件名称) - -size——通过文件大小来搜索。
+n——大于,-n——小于,n——等于
例如:find -size +204800
查找大于100MB的文件
这里的n是Linux中的一种单位,称为数据块,一个数据块等于512字节,也就是0.5K。
比如这里100MB=102400K=204800数据块 - -user——通过所有者来搜索。
- -group——通过所属组来搜索。
- -amin,-cmin,-mmin ——根据时间属性来搜索。
a——访问时间,c——文件属性,m——文件内容
理解起来比较抽象,举个例子吧。
例如:find /etc -cmin -5
在/etc目录下查找5分钟内被修改过属性的文件和目录。(+表示超过多长时间,-表示多少时间之内) - -type——根据文件类型查找,f——文件,d——目录,l——软链接文件。
- -inum——根据i结点查找。
附加搜索选项
1.-a——用在两个部分之间,表示两个搜索条件同时满足。
2、-o——用在两个部分之间,表示两个搜索条件之中只需满足其中一个。
例如:find /etc -size +163840 -a -size -204800
表示在/etc目录下查找大于80MB小于100MB的文件。
3.-exec/-ok 命令 {} \\;——对搜索的结果进行指定的操作。{} \\是固定格式。
例如 find /etc -name init -exec ls -l {} \\;
表示在/etc目录下查找init为名称的文件并显示其详细信息。