find
命令用于在文件系统中搜索文件和目录,并对找到的项目执行操作。通过文件名查找文件的所在位置,文件名查找支持模糊匹配。
grep
是在文件中找字符串,find
是在目录下找文件或者其他内容。
基本语法:
find [OPTION] [path ...] [expression]
示例:
find ./* -name "*.v"
命令的执行结果示例如下:
该命令用于搜索当前目录下以 v 为后缀的所有文件,它会自动对子目录进行检索,最终输出目标文件的相对路径。
选项
这里的选项可以分为两部分,一个是查找文件的选项,另一个是找到文件之后,对其进行某种操作的选项。
筛选选项:
options | Usage |
---|---|
-name pattern | 根据文件名进行查找,pattern 中支持通配符 * 和 ?。 |
-iname pattern | 根据文件名进行查找,忽略大小写 |
-type type | 根据文件类型进行查找,f 表示文件,d 表示目录,l 表示链接 |
-size n/+n/-n | 根据文件大小进行查找,+n 表示文件大于某个值,比如 10M,-n 表示文件小于某个值,n 则是等于 |
-depth | 先搜索子目录,再搜索当前目录 |
-maxdepth | 搜索的最大深度 |
-perm | 根据全选搜索文件,例如 -perm 755 |
操作选项(放在命令的最后面):
options | Usage |
---|---|
-delete | 找到文件后,将其删除 |
-exec coomand {} \; | 对找到的文件执行命令 |
-ok coomand {} \; | 对找到的文件执行命令,并在执行前提示用户确认 |
示例:
查找 /home 目录下所有大于 10M 的文件:
find /home -size +10M
查找当前目录下所有以 .txt 结尾的文件,并把它们复制到 /backup 目录:
find . -name "*.txt" -exec cp {} /backup \;
查找当前目录下所有以 .log 结尾的文件,并提示用户是否删除它们:
find . -name "*.log" -ok rm {} \;