一、 which
查找可执行的文件 ,搜索命令所在路径以及别名
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
二、whereis
只能用于搜索程序名,搜索命令所在的路径以及帮助文档所在的位置
命令选项
- -b:只查找可执行文件
- -m:只查找帮助文件
三、locate&&find
(一)locate
需要安装 yum install mlocate -y
依赖于事先构建好的索引库;
手动更新数据库(updatedb);
工作特性: 查找速度快;模糊查找;非实时查找;
命令语法
locate [OPTION]… PATTERN…
命令选项
-
-b:只匹配路径中的基名
-
-c:统计出共有多少个符合条件的文件
索引构建过程需要遍历整个根文件系统,极消耗资源;
(二)find
搜索文件
实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;
工作特性
查找速度略慢;精确查找; 实时查找;
命令用法
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认为当前目录
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行,默认为找出指定路径下的所有文件
处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出
查找条件:
表达式:
选项
测试
组合测试:-a(与);-o(或);-not,!(非)
1、根据文件名查找
-
-name “pattern” :支持通配符 *, ?, [], [^]
-
-iname “pattern” :不区分大小写
-
-regex “pattern”:基于正则表达式模式查找文件,匹配是整个路径,而非其名
2、根据文件从属关系查找 -
-user :查找属主指定用户的所有文件
-
-group :查找属组指定组的所有文件
-
-uid UID:查找属主指定的UID的所有文件
-
-gid GID:查找属组指定的GID的所有文件
-
-nouser:查找没有属主的文件
-
-nogroup:查找没有属组的文件
3、根据文件的类型查找
-type TYPE -
f: 普通文件
-
d: 目录文件
-
l:符号链接文件
-
b:块设备文件
-
c:字符设备文件
-
p:管道文件
-
s:socket套接字文件
4、根据文件的大小查找
-size [+|-]#UNIT
常用单位:k, M, G
- #UNIT:(#-1, #]
- -#UNIT:[0,#-1]
- +#UNIT:(#, ∞)
5、根据时间戳查找
以“天”为单位:
-
-atime [+|-]#
#:[#, #-1) : 10 (大于等于10天前,小于9天前)
-#:(#, 0] : -10 (最后的访问时间10天以内)
+#:(∞, #-1]:+10 (最后的访问时间在9天以前,包括9天) -
-mtime [+|-]#
-
-ctime [+|-]#
以“分钟”为单位
- -amin [+|-]#
- -mmin [+|-]#
- -cmin [+|-]#
6、根据文件权限查找
-perm [/|-]mode
权限对象:三类 属主 属组 其他
权限位: 读 写 执行 r w x 4 2 1
- mode:(421)精确权限匹配;
- /mode:(/421)任何一类用户的权限中的任何一位(r,w,x)符合条件即满足; 9位权限之间存在“或”关系;
- -mode:(-421)每一类用户的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;
7、目录层级
基于目录层级查找:
-path
基于目录深度查找:
- -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
- -maxdepth最大深度 ,在某个层次目录中按照递减方法查找
- -mindepth最小深度,在某个层次目录中按照递减方法查找
如:查找/tmp目录下第三层目录中的文件
[root@nebula tmp]# find /tmp/ -maxdepth 3 -mindepth 3 -name “file*”
/tmp/test/test/file_test
[root@nebula tmp]# find /tmp/ -maxdepth 4 -mindepth 4 -name “file*”
/tmp/test/test/test/file_new
处理动作:
- -print:输出至标准输出;默认的动作
- -delete:删除查找到的文件
- -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件
- -ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
- -exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令
- -xargs -0 commond {} ;规避有些命令不能接受过长参数执行失败的问题
练习
- 查找/var目录下属主为root,且属组为mail的所有文件或目录
- 查找/etc目录下大于1M且类型为普通文件的所有文件
- 查找/etc目录下所有用户都没有写权限的文件
- 查找/etc目录至少有一类用户没有执行权限的文件