如何使用正则表达式进行搜索,启用换行命令的野兽模式
使用正则表达式在Linux中查找命令[5个示例]
使用正则表达式进行搜索,启用find命令的野兽模式。
find命令是一个强悍的命令,可以按照多种条件搜索文件。
您可以在find命令中使用正则表达式(regex)进行搜索来启用野兽模式。
但在跳到示例部份之前linux安装,了解一些基本的正则表达式标记和句型至关重要。
正则表达式令牌快速简介
标记不过是用于搜索指定模式的特殊字符。
这么让我们看一下我将在find命令中使用的一些最基本且广泛使用的标记:
Period(.)
它可以让您匹配任何字符一次(换行除外)。因而a.b将匹配acb、aeb和abb等字符串,但不会匹配accb或ab
Backslash()
它清除了特殊字符的影响,比如(.)将指示句点疗效,但当使用a.b时,它只会搜索字符串a.b
Asterisk(*)
它被称为中继器符号。这意味着后面的字符可以找到0次或多次。所以ca*t会找到给你ct、cat、caat等。
Squarebrackets([])
方括弧内字符串中使用的任何字符就会得到肯定的结果。这意味着a[bc]d将匹配abd或acd,但不匹配abcd。
Caret(^)
通常用于指定搜索的起点,但在方括弧[^]内使用时也可用于否定内容。意味着a[^bc]d将为您提供aed、azd,但不会提供abd或acd。
如今,让我们看一下将find与正则表达式结合使用的基本句型:
find [path] -regex [regular_expression]
这儿,
如今是时侯让我分享一些怎样将find与正则表达式结合使用的示例了。
使用正则表达式查找命令的实际示例
我将从最常见的场景开始linux find命令 正则 次数,其中用户只晓得文件的前几个字符并想晓得它在那儿。
当前目录下按照首字符搜索文件
目前,我的文件系统如下所示:
我想搜索以Fo或Fr开头的文件,所以我的命令是:
find ./ -type f -regex './F[or].*'
这儿,-typef用于搜索文件,./用于在当前目录中查找文件,F[or]将显示从Fo和Fr开始的文件名。
然而,假若您想对给定结果执行一些命令/程序如何办?这可以通过使用find命令和exec来完成:
搜索子目录中的文件
前面的示例仅适用于当前目录,并没有显示一些遵守相同命名模式的文件。
为此,我将使用相同的命名模式F[or]来查找子目录中的文件:
find ./ -type f -regex './[^/]*/F[or][^/]*'
看上去太复杂了对吧?让我为你分解一下。
这儿的[^/]*/引用不包含任何反斜杠的文件,因而清除了在当前目录中查找文件的可能性。
最后linux find命令 正则 次数,我用[^/]替换了句点(.),以免将搜索范围扩大到第一个子目录,并强调文件名前面不应有斜杠。
通过每位子目录中的正则表达式模式搜索文件
在单个子目录中搜索后看上去相当复杂,对吗?嗯,这将是最简单的一个!
好吧linux培训机构,两个星号就是这样!让我告诉你怎样做:
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之旅中更进一步。
其实本手册很简单,但倘若您一直有任何疑惑,请在评论中告诉我。