使用正则表达式在 Linux 中查找命令 [5 个示例]使用正则表达式在 Linux 中查找命令 [5 个示例]使用正则表达式在 Linux 中查找命令 [5 个示例]使用正则表达式在 Linux 中查找命令 [5 个示例]
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

使用正则表达式在 Linux 中查找命令 [5 个示例]

发表 admin at 2025年2月28日
类别
  • 未分类
标签
月額480円〜の高速レンタルサーバー ColorfulBox

使用正则表达式进行搜索,启用 find 命令的野兽模式。

find 命令是一个强大的命令,可以根据多种条件搜索文件。

您可以在 find 命令中使用正则表达式(regex)进行搜索来启用野兽模式。

但在跳到示例部分之前,了解一些基本的正则表达式标记和语法至关重要。

正则表达式令牌快速简介

标记不过是用于搜索指定模式的特殊字符。

那么让我们看一下我将在 find 命令中使用的一些最基本且广泛使用的标记:

Period (.)

它可以让您匹配任何字符一次(换行除外)。因此 a.b 将匹配 acb、aeb 和 abb 等字符串,但不会匹配 accb 或 ab

Backslash (\)

它消除了特殊字符的影响,例如 (.) 将指示句点效果,但当使用 a.b 时,它只会搜索字符串 a.b

Asterisk (*)

它被称为中继器符号。这意味着前面的字符可以找到 0 次或多次。所以 ca*t 会找到给你 ct、cat、caat 等。

Square brackets ([])

方括号内字符串中使用的任何字符都会得到肯定的结果。这意味着 a[bc]d 将匹配 abd 或 acd,但不匹配 abcd。

Caret (^)

一般用于指定搜索的起点,但在方括号[^]内使用时也可用于否定内容。意味着 a[^bc]d 将为您提供 aed、azd,但不会提供 abd 或 acd。

现在,让我们看一下将 find 与正则表达式结合使用的基本语法:

find [path] -regex [regular_expression]

这里,

  • [path] 是您要搜索文件的位置。

  • regular_expression 是您将使用标记来表达您正在查找的文件模式的地方。

现在是时候让我分享一些如何将 find 与正则表达式结合使用的示例了。

使用正则表达式查找命令的实际示例

我将从最常见的场景开始,其中用户只知道文件的前几个字符并想知道它在哪里。

当前目录下根据首字符搜索文件

目前,我的文件系统如下所示:

我想搜索以 Fo 或 Fr 开头的文件,所以我的命令是:

find ./ -type f -regex '\.\/F[or].*'

这里,-type f 用于搜索文件,.\/ 用于在当前目录中查找文件,F[or] 将显示从 Fo 和 Fr 开始的文件名。

但是,如果您想对给定结果执行一些命令/程序怎么办?这可以通过使用 find 命令和 exec 来完成:

搜索子目录中的文件

上面的示例仅适用于当前目录,并没有显示一些遵循相同命名模式的文件。

因此,我将使用相同的命名模式 F[or] 来查找子目录中的文件:

find ./ -type f -regex '\.\/[^/]*\/F[or][^/]*'

看起来太复杂了对吧?让我为你分解一下。

这里的 [^/]*\/ 引用不包含任何反斜杠的文件,从而消除了在当前目录中查找文件的可能性。

最后,我用 [^/] 替换了句点 ( . ),以免将搜索范围扩大到第一个子目录,并指出文件名后面不应有斜杠。

通过每个子目录中的正则表达式模式搜索文件

在单个子目录中搜索后看起来相当复杂,对吗?嗯,这将是最简单的一个!

好吧,两个星号就是这样!让我告诉你怎么做:

find ./ -type f -regex '.*F[or].*'

如果你对它是如何工作的感到好奇,那是因为我在开头和结尾都使用了星号,所以它经历了所有可能性。

根据扩展名搜索文件

首先,让我分享一下如何根据扩展名搜索文件的一般语法:

find ./ -type f -regex ".*\[fileextension]"

因此,假设我想找到所有文本文件(具有 .txt 扩展名),并且可以通过给定命令轻松完成:

find -regex -type f ".*\.txt"

根据文件名和扩展名搜索文件

这是我个人最喜欢的正则表达式与 find 的实现,因为您可以根据首字母及其扩展名搜索文件,这非常方便。

首先,我们看一下语法:

find ./ -type f -regex '\.\/[Filename].*\.[extension]'

让我们把它变得实用一点。因此,我遇到的情况是,我只知道文件的前几个字母(以 Fo 或 Fr 开头)及其扩展名 (.sh):

find ./ -type f -regex '\.\/F[or].*\.sh'

最后的话

从查找在 n 分钟内修改的文件到使用 exec 对结果执行脚本,find 是提供超过 50 多个选项的最广泛的命令之一。

本指南解释了使用 find 命令的另一种方法,使您在 Linux 之旅中更进一步。

虽然本指南很简单,但如果您仍然有任何疑问,请在评论中告诉我。

©2015-2025 Norria support@alaica.com