Logo
Section 1 / 7

在 Bash 中进行搜索

如何根据各种属性搜索文件和目录,使用不同的方法。此外,本课程还涵盖基于文件内容和模式进行搜索的方法。

导入

在 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"

find 与 locate 的区别

权限命令

按顺序排序文件内容