语法
find path -option [-print] [-exec -ok command] {} \;
作用
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
参数
find 根据下列规则判断 path 和 expression,在命令列上第一个 – ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
- -print
将查找到的文件输出到标准输出 - -exec command {} \;
将查到的文件执行command操作,{} 和 \;之间有空格
【;】在bash环境下是有特殊意义的,故用”\”来转义 - -ok
和-exec相同,只不过在操作前要询用户
文 件 名 | -name<filename> | 查找文件名为filename的文件; | |
-iname<filename> | 不区分大小写查找文件名为filename的文件; | ||
用 户 及 组 | -uid | 查找文件所属用户uid=n的所有文件 | |
-gid | 查找文件所属组gid=n的所有文件 | ||
-user<username> | 查找文件所属用户为 username 的所有文件; | ||
-group<gname> | 查找文件所属组为gname的所有文件; | ||
-nouser | 查找文件的拥有者不在/etc/passwd中; | ||
-nogroup | 查找文件的用户组不在/etc/group中; | ||
文 件 类 型 | -type | 根据类型查找 | |
f | 文件 | ||
d | 目录 | ||
c | 字符设备文件 | ||
b | 块设备文件 | ||
i | 链接文件 | ||
p | 管道文件 | ||
大 小 | -size | 根据文件大小查询 | |
-n | 小于大小为 n 的文件 | ||
+n | 大于大小为 n 的文件 | ||
时 间 | -mtime -atime -ctime | 根据时间(天)查询,以“-mtime”为例 | |
n | 意义为在n天之前的【一天之内】修改过的文件 | ||
+n | 列出在n天之前(不含n天本身)被修改过的文件 | ||
-n | 列出在n天之内(含n天本身)被修改过的文件 | ||
-mmin | 根据时间(分钟)查询 | ||
-n | n 分钟以内修改过的文件 | ||
+n | n 分钟之前修改过的文件 | ||
目录 层级 | -mindepth<n> | 从第 n 级目录开始搜索 | |
-maxdepth<n> | 表示至多搜索到第 n-1 级子目录。 | ||
权限 | -perm | 根据权限查找文件,默认为mode模式 | |
mode | 查找文件权限刚好等于mode的文件 | ||
-mode | 查找文件权限必须要全部囊括mode的权限 | ||
+mode | 查找文件权限包含任一mode的权限 | ||
路径 | -path<p> | 路径名称符合 p 的文件,注意p用引号引起来 | |
-ipath<p> | 忽略路径名大小写符合p的文件 | ||
-prune | 通常和 -path 一起使用,用于将特定目录排除在搜索条件之外。过滤条件写在其他条件前面。 | ||
新旧 | -newer<file> | 查找当前目录下比 a 文件要新的文件。 | |
逻辑 符 | -a | 与 | |
-o | 或 | ||
-not | ! | 非 |
使用实例
根据目录名搜索
默认情况下只搜索文件名,而不搜索目录。
[root@Ethan Ethan]# find b.d
find: ‘b.d’: No such file or directory
寻找名为”b.d”的目录
[root@Ethan Ethan]# tree
.
├── a.d
│ ├── b1.d
│ ├── b2.d
│ ├── b3.d
│ └── b.d
│ └── c.d
├── admin
│ ├── a-b.txt -> a.txt
│ ├── a-l.txt
│ ├── a-s-b.txt
│ ├── a-s.txt -> a.txt
│ ├── a.txt
│ └── b.d
│ └── a.txt
├── a.out
├── a.txt
└── hello.c
8 directories, 9 files
[root@Ethan Ethan]# find . -path "*/b.d"
./admin/b.d
./a.d/b.d
对搜索结果进行处理
[root@Ethan Ethan]# find . -path "*/b.d" -exec ls -ld {} \;
drwxr-xr-x 2 root root 4096 Feb 27 10:41 ./admin/b.d
drwxr-xr-x 3 root root 4096 Feb 28 14:19 ./a.d/b.d