一、find命令
find介绍:
find是可以通过文件名称、类型、大小、权限属性、时间戳等条件在指定目录下查找对应文件或者目录的工具;还可以配合相关命令对匹配到的文件作出后续处理。
二、工作原理及特点
find在查找文件时会遍历指定的目录,具有以下特点:
三、命令用法
find [path...] [expression]
# [path...]为需要查找文件所指定的路径。如果不指定,则默认为当前目录及其子目录。
# [expression]为匹配条件/表达式。如果未设置匹配条件,则默认查找指定目录及子目录下所有文件
3.1 指定搜索目录层级/深度
格式:find 目录 -maxdepth 深度 -name “*.conf”
-maxdepth level 指定最大搜索目录深度level,指定的目录为第1级
-mindepth level 指定最小搜索目录深度level。配合-maxdepth可搜索指定深度的文件。
[root@localhost /]# find / -maxdepth 2 -name "*.conf"
/etc/srp_daemon.conf
/etc/man_db.conf
3.2 根据文件名和inode查找
-name “FILE_NAME” 文件名查找,支持使用glob:*、?、[]、[^]
-iname “FILE_NAME” 文件名查找,不区分大小写
-inum n 按inode号查找
-samefile name 查找与指定文件有相同inode号的文件,一般用于查找硬连接文件
-links n 查找连接数为N的文件
-regex “PATTERN” 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
格式:find 目录 -name “f”
[root@localhost /]# find . -name "f*"
3.3 根据属主/属组查找
根据文件的属性和属组信息进行查找,用的较少
-user username 查找属主为指定用户(UID)的文件
-group groupname 查找属组为指定组(GID)的文件
-uid UseerID 查找属主为指定的UID号的文件
-gid GroupID 查找属组为指定的GID号的文件
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
[root@localhost /]# find /home -user root
/home
/home/lost+found
/home/add_disk_all.sh
/home/TopVCM_V3.1.0313_FSWX_oe2203.X86_20231205201719.bin
[root@localhost /]# find /home -group root
/home
/home/lost+found
/home/add_disk_all.sh
/home/TopVCM_V3.1.0313_FSWX_oe2203.X86_20231205201719.bin
3.4 根据文件类型查找
linux系统中的文件大致分为:普通文件、目录文件、二进制程序文件、符号链接文件、套接字文件、块设备文件、字符设备文件。命令用法为find [path] -type TYPE。TYPE的值及具体含义如下
f 普通文件
d 目录文件
l 符号链接文件
s 套接字文件
b 块设备文件
c 字符设备文件
p 管道文件
[root@localhost /]# find /home -maxdepth 1 -type d
/home
/home/lost+found
/home/wp