Find命令
简介
基本信息:
名称:find
英文:search for files in a directory hierarchy
路径:/bin/find
权限:所有用户
功能:在目录中查找文件
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find [OPTION]… [查找路径] [查找条件] [处理动作]
查找路径: 指定具体目标路径;默认为当前目录
查找条件: 指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作: 对符合条件的文件做操作,默认输出至屏幕
查找条件
参数 | 功能 |
---|---|
-maxdepthlevel | 最大搜索目录深度,指定目录为第1级 |
-mindepthlevel | 最小搜索目录深度 |
-name “文件名称” | 支持使用glob*, ?, [], [^] |
-iname"文件名称" | 不区分字母大小写 |
-inum n | 按inode号查找 |
-samefile name | 相同inode号的文件 |
-links n | 链接数为n的文件 |
-regex “PATTERN” | 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称 |
-user USERNAME | 查找属主为指定用户(UID)的文件 |
-group GRPNAME | 查找属组为指定组(GID)的文件 |
-uidUserID | 查找属主为指定的UID号的文件 |
-gidGroupID | 查找属组为指定的GID号的文件 |
-nouser | 查找没有属主的文件 |
-nogroup | 查找没有属组的文件 |
type参数
参数 | 功能 |
---|---|
f | 普通文件 |
d | 目录文件 |
l | 符号链接文件 |
s | 套接字文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
组合条件
参数 | 功能 |
---|---|
与 | -a |
或 | -o |
非 | -not, ! |
示例
其他查找方式
按文件大小查找
语法 | 描述 |
---|---|
#UNIT: (#-1, #] | 如:6k 表示(5k,6k] |
-#UNIT:[0,#-1] | 如:-6k 表示[0,5k] |
+#UNIT:(#,∞) | 如:+6k 表示(6k,∞) |
注:常用单位:k, M, G,c(byte)
按照时间查找
语法 | 描述 |
---|---|
# | [#,#+1) |
+# | [#+1,∞] |
-# | [0,#) |
-atime | 查询access time(以“天”为单位) |
-mtime | 查询modify time(以“天”为单位) |
-ctime | 查询change time(以“天”为单位) |
-amin | 查询access time(以“分钟”为单位) |
-mmin | 查询modify time(以“分钟”为单位) |
-cmin | 查询change time(以“分钟”为单位) |
处理动作
参数 | 功能 |
---|---|
-exec COMMAND {} \ | 对查找到的每个文件执行由COMMAND指定的命令 |
示例
查找/var目录下属主为root,且属组为mail的所有文件
原理:利用find命令中的-user和-group配合与操作
root@liuyan-virtual-machine:~# find /var -user root -a -group mail -ls
660417 4 drwxrwsr-x 2 root mail 4096 2月 10 2019 /var/mail
查找/var目录下不属于root、lp、gdm的所有文件
原理:利用find命令配合非运算
root@liuyan-virtual-machine:~# find /var -not -user root -not -user lp -not -user gdm -ls
1050125 4 drwxr-xr-x 4 colord colord 4096 2月 24 17:32 /var/lib/colord
1051626 4 drwx------ 2 colord colord 4096 2月 24 17:32 /var/lib/colord/.cache
查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是man的文件
原理:利用find命令配合-time以及与非运算即可
root@liuyan-virtual-machine:~# find /var -ctime -7 -a -not -user root -a -not -user man -ls
655569 4 drwxr-xr-x 2 systemd-timesync systemd-timesync 4096 2月 24 17:31 /var/lib/private/systemd/timesync
655570 0 -rw-r--r-- 1 systemd-timesync systemd-timesync 0 3月 7 21:40 /var/lib/private/systemd/timesync/clock
查找/etc目录下小于1M且类型为普通文件的所有文件
原理:利用find命令配合-size命令和-type命令操作
root@liuyan-virtual-machine:~# find /etc -size -1M -a -type f -ls
263441 0 -rw-r--r-- 1 root root 0 2月 10 2019 /etc/dictionaries-common/ispell-default
263883 0 -rw-r--r-- 1 root root 0 8月 7 2017 /etc/newt/palette.original
262786 0 -rw-r--r-- 1 root root 0 2月 10 2019 /etc/apparmor.d/local/usr.sbin.cups-browsed
262787 0 -rw-r--r-- 1 root root 0 2月 10 2019 /etc/apparmor.d/local/usr.sbin.cupsd