「Linux 系统编程」find 命令
1 find 命令
find 是 Linux 系统中一个非常强大的文件搜索工具,它能够根据各种条件在指定目录下 递归查找文件和目录。
1 | |
如果不指定 搜索路径,默认在当前目录搜索,即 ./:
1 | |
find 也可以在后面添加 执行操作 参数,在 4 对搜索结果执行操作
2 搜索方式
2.1 按文件名搜索
-name "文件名":精确匹配文件名(区分大小写)
1 | |

-iname "文件名":忽略大小写匹配文件名称
1 | |

也可以用通配符 * 进行文件名匹配:
1 | |

2.2 按文件类型搜索
-type f:普通文件-type d:目录-type l:符号链接
1 | |

1 | |

2.3 按文件大小搜索
-size [+/-]大小:+ 表示大于,- 表示小于- 单位:c(B)、k(KB)、M(MB)、G(GB)
1 | |

注意: 执行 find -size -1M、find -size -1k 等类似命令时出现了问题,只显示大小为 0 的文件,这与理论结果不符,暂且不知道具体原因。可以转而采用 find -size -1024k 的形式执行命令。
2.4 按修改时间搜索
-atime [+/-]天数:按访问时间-mtime [+/-]天数:按内容修改时间-ctime [+/-]天数:按状态更改时间
1 | |


2.5 组合条件搜索
-a:逻辑与(默认,可省略)-o:逻辑或!:逻辑非
1 | |

3 指定搜索的深度
在 find 命令中,-maxdepth 参数用于限制搜索的目录深度,避免无限制地递归到过深的子目录中。
1 | |
级别 是一个非负整数,表示最大搜索深度:
1:搜索起始目录(不深入任何子目录)n:最多深入到第 级子目录
1 | |

-maxdepth 和 -mindepth 需要 放在所有参数的前面(如 -name、-type)。
find 严格按从左到右的顺序处理参数,一旦遇到非选项类表达式(如 -name、-type),就会开始执行搜索逻辑。而 -maxdepth 属于全局选项,若放在表达式(如 -name)之后,此时搜索已开始,深度限制无法生效。

4 对搜索结果执行操作
-exec 命令 {} \;:对每个结果执行命令
其中 {} 代表搜索到的文件集合,\; 表示执行结束符号(\ 为转义字符)。
1 | |

-ok 命令 {} \;:先询问用户是否执行操作,确认后才会执行命令(交互式执行命令)
1 | |

「Linux 系统编程」find 命令
https://marisamagic.github.io/2025/08/05/20250805/