不管是Linux系统还是Windows系统最好是少用搜索,在服务器规划时就规划好文件的存放,不要随便瞎放,因为搜索功能会占用大量的系统资源。如果实在要查找,不要在服务器业务高峰期进行此操作,查找的目录范围越小越好,搜索的条件越精准越好。
1.find
功能:文件搜索
语法:find [搜索范围] [匹配条件]
选项
- -name
根据文件名来查找文件
此搜索是精确搜索,不像Windows是模糊搜索,也会出现例如optab、1opt等。若想是模糊搜索则需要加上通配符。
也可以更精确,比如记得文件名是init开头,后面还有3个字符,则可以这样搜索 - -iname 不区分大小写
- -size
根据文件大小来查找文件
$ find / -size +204800
表示在根目录下查找大于100M的文件;+n 大于,-n 小于,n 等于;
这里的数值单位为数据块,1数据块=512字节=0.5K,则100M=102400K=204800数据块 - -user
根据所有者查找 - -group
根据所属组查找 - 时间属性
- -amin access,访问时间
- -cmin change,文件属性
- -mmin modify,文件内容
例如:查找/etc目录下在5分钟之内被修改过属性的文件或目录
$ find /etc -cmin -5
- -type
根据文件类型查找
-f 文件,-d 目录,-l 软链接文件 - -a
all,用于连接多个搜索条件,同时满足 - -o
or,用于连接多个搜索条件,满足任意一个即可 - -exec/-ok
组合用于对find查找出的结果进行其他操作。
例如:在/etc目录下查找文件名为inittab的文件并显示其详细信息
-exec…{} ;为固定格式
-exce/-ok的区别在于,-ok会有一个确认机制再次询问确认,适用于删除操作。 - -inum
根据i节点来查找
2.locate
功能:在资料库中查找文件。查找速度比find快,因为find是在目录下进行遍历查找,而locate是在资料库中直接查找
通过locate locate可以查到其资料库所在位置,其资料库本质是一个文件和文件夹的索引数据库。
locate最大的问题是,新创建文件之后索引数据库没有及时更新导致locate查不出来,针对这个问题可以查找之前使用updatedb更新一下数据库;并且/tmp临时目录下的文件没有存在索引数据库中
选项
- -i
不区分大小写
3.which
功能:搜索命令所在目录及别名信息
/bin和/usr/bin路径下的命令所有的用户都可以使用
/sbin和/usr/sbin路径下的命令只有root用户可以使用
4.whereis
功能:搜索命令所在目录及帮助文档路径
5.grep
选项
- -i 不区分大小写
- -v 排除指定字符,反向筛选