# 命令行文件查找

> 在日常中，find的使用频率很高，熟练掌握对提供工作效率很有帮助。

语法:

```
find(选项)(参数)
```

1、列出当前目录以及目录下的所有文件

```
find .
```

2、找到当前目录下名字为 11.png 的文件

```
find . -name "11.png"
```

3、找到当前目录下所有的  jpg 文件

```
find . -name "*.jpg"
```

4、找到当前目录下的  jpg 文件和 png 文件

```
find . -name "*.jpg" -o -name "*.png"
```

5、找到当前目录下不是以 png 结尾的文件

```
find . ! -nam "*.png"
```

6、根据正则表达式查找

比如：查找当前目录下，文件名都是数字的 png 文件

```
find . -regex "\./*[0-9]+\.png"
```

7、根据路径查找

找到当前目录下路径中包含 swj 的文件/路径

```
find . -path "*swj*"
```

8、根据文件类型查找

查找当前目录下，路径包含 swj 的文件

```
find . -type f -path "*swj*"
```

9、限制搜索深度

查找当前目录下所有的 png，不包括字目录

```
find . -maxdepth 1 -name "*.png"
```

相应的， mindepth 也是选项

```
find . -mindepth 2 -name "*.png"
```

10、根据文件大小

通过 -size 来过滤文件大小，支持的单位如下

* b - 块（512字节）
* c - 字节
* w - 字 （2字节）
* k - 千字节
* M - 兆字节
* G - 吉字节

找出当前目录下文件大小超过 100M 的文件

```
find . -type f -size +100M

find ./ -size +100MB
```


11、根据访问/修改/变化时间

* 访问时间（-atime/天，-amin/分钟）：用户最近一次访问时间
* 修改时间 （-mtime/天， -mmin/分钟）： 文件最后一次修改时间
* 变化时间 （-ctime/天， -cmin/分钟）：文件数据元（例如权限的过）最后一次修改时间

找出 1天内被修改过的文件

```
find . -type f -mtime -1
```

找出最近1周内被访问过的文件

```
find . -type f -atime -7
```

12、根据权限

通过 -perm 来实现

找出当前目录下权限为777的文件

```
find . -type f -perm 777
```

找出当前目录下权限不是644的php文件

```
find . -type f -name "*.php" ! -perm 644
```

13、根据文件拥有者

找出文件拥有者为 root 的文件

```
find . -type f -user root
```

找出文件所在群组为 root 的文件

```
find . -type f -group root
```



