导入
在 Bash 中进行搜索
如何根据各种属性搜索文件和目录,使用不同的方法。此外,本课程还涵盖基于文件内容和模式进行搜索的方法。
locate
定义:
命令 locate 是一种快速查找文件和目录位置的方法。
语法:
1locate [选项] 名称(s)
选项:
| 选项 | 描述 |
|---|---|
| -q | 抑制错误消息,例如当用户没有权限访问指定文件或目录时可能返回的错误信息。 |
| -n | 后跟一个整数,限制结果数量。 |
| -i | 执行不区分大小写的搜索。 |
| -V | 显示所使用的 locate 版本信息,包括是 locate 还是 slocate。 |
示例:
- 搜索所有名为 'file1' 的文件以及所有名为 'dir1' 的目录(用户有访问权限的情况下):
1locate file1 dir1
- 显示系统中所有扩展名为 ".jpeg" 的文件:
1locate "*.jpeg"
- 在上述示例中,仅显示前 10 个结果:
1locate -n 10 "*.jpeg"
find
定义:
find 是一个非常强大的命令,用于在目录树中按名称、类型等条件查找文件和目录。
语法:
1find [路径...] [表达式]
测试(过滤器):
find 具备筛选出所需文件和文件夹的能力,这些称为测试。
| 测试 | 描述 |
|---|---|
| -type f | 选择文件。 |
| -type d | 选择目录。 |
| -name | 当文件名的基本部分(去除前导目录后的路径)匹配 shell 模式 pattern 时为真。 |
| -iname | 不区分大小写地进行搜索。 |
| -prune | 忽略整个目录树。 |
| -path | 与 -name 类似,但不仅作用于文件名,而是整个路径。 |
| -not | 仅返回不符合测试条件的结果。 |
示例:
-
按特定名称搜索文件:
在 runner/projects 目录中查找名为 "img.png" 的文件:
1find runner/projects -name "img.png"
-
按特定模式搜索文件:
在 runner/projects 目录中查找所有头文件:
1find runner/projects -name "*.h"
-
使用 find 命令删除文件:
删除位于 runner/projects 中的 square.h 文件:
1find runner/projects -name "square.h" -delete
-
在搜索中排除特定模式的文件:
若要排除所有 .h 文件,仅显示 runner/projects 目录中其他所有文件:
1find runner/projects -not -name "*.h"