Linux文件搜索命令
1、which 查找可执行的文件搜索命令所在路径及别名
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令。
2、whereis 查看文件的位置搜索命令所在的路径以及帮助文档所在的位置
whereis命令只能用于搜索程序名,而且只搜索二进制文件(选项-b)、man说明文件(选项-m)和源代码文件(选项-s)。
命令选项:
-
-b:只查找可执行文件
-
-m:只查找帮助文件
3、locate:依赖于事先构建好的索引库;系统自动实现(周期性任务);手动更新数据库(updatedb);
工作特性:查找速度快;模糊查找;非实时查找;
语法结构:locate [OPTION]… PATTERN…
命令选项:
-
-b:只匹配路径中的基名;
-
-c:统计出共有多少个符合条件的文件;
4、 find:实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找
-
与 -a 或 -o 非:-not !
-
工作特性:查找速度略慢;精确查找;实时查找;
-
语法结构:find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
-
查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
-
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件;
-
处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;
-
查找条件:表达式:选项和测试
根据文件名查找:
- -name “pattern”
- -iname “pattern”
- 支持glob风格的通配符*, ?, [], [^]
- -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名;
根据文件从属关系查找:
-
-user USERNAME:查找属主指定用户的所有文件;
-
-group GRPNAME:查找属组指定组的所有文件;
-
-uid UID:查找属主指定的UID的所有文件;
-
-gid GID:查找属组指定的GID的所有文件;
-
-nouser:查找没有属主的文件;
-
-nogroup:查找没有属组的文件;
根据文件的类型查找-type TYPE:-type TYPE:
- f: 普通文件
eg:find / -type b - d: 目录文件 l:符号链接文件
eg:find / -type d - b:块设备文件
- c:字符设备文件
eg:find / -type c - p:管道文件
eg:find / -type p - s:套接字文件
eg:find / -type s
根据文件的大小查找:
-
-size [+|-]#UNIT
-
#UNIT:(#-1, #]
-
-#UNIT:[0,#-1]
-
+#UNIT:(#, oo)
根据时间戳查找:
(1)以“天”为单位:
-
-atime [+|-]#:文件最后访问时间
#:[#, #-1): eg:10 大于等于10天前,小于9天前
-#:(#, 0]:eg:-10 最后的访问时间10天以内
+#:(oo, #-1]:eg:+10 最后的访问时间在9天以前,包括9天 -
-mtime:文件最后修改时间
-
-ctime :文件最后改变时间
(2)以“分钟”为单位:
-
-amin[+|-]#
-
-mmin[+|-]#
-
-cmin[+|-]#
根据权限查找:
-perm [/|-]mode
- mode:精确权限匹配;
eg:find / -perm /777 - /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;
eg:find / -perm /777
9位权限之间存在“或”关系;
- -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即足;
eg:find / -perm -777
9位权限之间存在“与”关系;
目录层级
-
-maxdepth levels 在某个层次目录中按照递减方法查找
-
-mindepth levels 在某个层次目录中按照递减方法查找
[root@nebulalinux03 tmp]# find /tmp -mindepth 4 -maxdepth 4 -name file #查找/tmp目录下第三层目录中的文件名为file的文件
处理动作:
-
-print:输出至标准输出;默认的动作;
-
-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
-
-delete:删除查找到的文件;
-
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
-
-ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-
-exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;
练习:
1)查找/var目录下属主为root,且属组为mail的所有文件或目录
2) 查找/etc目录下大于1M且类型为普通文件的所有文件;