在之前的帖子中,我们学到了以下内容:

1.使用pwdfind我们当前的工作目录

2.cd进入一个目录

3.lsto list 目录内容

4.file确定文件的内容

5.less查看文本文件内容

现在似乎缺少的是我们如何操作文件和目录/文件夹。

但是在我们开始操作文件和文件夹之前,我们需要了解一些其他的东西。

由于 Linux 系统大量使用文件名,它为我们提供了特殊字符来帮助我们快速指定文件名组。这些特殊字符称为通配符

好的,通配符看起来很有帮助,但是什么字符代表通配符,我们如何使用它们呢?

让我们看看 shell 提供的所有通配符"The Linux Command Line"

[通配符](https://res.cloudinary.com/practicaldev/image/fetch/s--mat5AjJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/vnxp1uywkv4ct9g5vdqy.png)

好的,我们知道通配符是什么,让我们通过一些例子来了解这些通配符的使用:

  • 列出所有.txt结尾的文件

[星形通配符](https://res.cloudinary.com/practicaldev/image/fetch/s--eRcaD6s9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/i/k8elol84thxn5wk17ktu.png)

在上面的例子中,我们首先使用ls命令列出目录内容,然后因为我们只想要以.txt结尾的文件,所以我们使用通配符*并创建了命令ls *.txt

所以让我们分解命令

ls *.txt哪里

*匹配任何字符并且

*.txt表示任何以 .txt 结尾的文件。

  • 使用 f 列出所有 .txt 文件 begininig

[wildcard-star-f](https://res.cloudinary.com/practicaldev/image/fetch/s--OGTBRyAn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/i/wdfvctz3n5sghrl7k499.png)

在上面的例子中,我们首先使用ls *.txt命令列出以“.txt”结尾的目录内容,然后由于我们只想要以f开头并以.txt结尾的文件和文件夹,我们使用通配符*并创建了一个命令ls f*.txt

所以让我们分解命令

ls f*.txt其中

f指定文件名应以f开头,

*指定在和之间可以有任何字符

.txt表示任何以 .txt 结尾的文件。

  • 列出所有以“textFile”开头并且之后正好有 1 个字符的 .txt 文件。例如textFile9.txt

[通配符问题](https://res.cloudinary.com/practicaldev/image/fetch/s--nEbAE91D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/i/wpclr2adoofb5jziqr9h.png)

在上面的示例中,我们首先使用ls *.txt列出目录中的所有文本文件,然后使用通配符?并创建命令ls textFile?.txt来根据我们的要求过滤结果

所以让我们分解命令

ls textFile?.txt哪里

textFile指定文件应以“textFile”开头

textFile之后有一个?,因为我们想要在“textFile”之后恰好有一个字符的文件

.txt表示任何以 .txt 结尾的文件。

因此,类似地,如果我们需要以“someText”开头并恰好包含三个字符的 .txt 文件,我们将创建命令

ls someText???.txt

现在?允许我们对我们的过滤器进行通用化,即它代表任何单个字符,但是如果我们想进一步过滤我们的结果怎么办

如果我们只想获取具有数字 2、4 或 6文件和文件夹,该怎么办。

因此文件可以以任何字符开头并以任何字符结尾,但它应至少包含三个数字中的一个

[通配符括号](https://res.cloudinary.com/practicaldev/image/fetch/s--X0kdNGNw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/i/c33kax5t35sxfyd3abiy.png)

在上面的例子中,我们使用了通配符[]并创建了一个命令ls *[2,4,6]*来得到想要的结果。

所以让我们分解命令

ls *[2,4,6]*哪里

*代表任意字符

[2,4,6]表示编号为 2 或 4 或 6 的文件和文件夹

同样,让我们找出

  • 开头的文件和文件夹字母 a 或 b 或 s

[命令括号 abs](https://res.cloudinary.com/practicaldev/image/fetch/s--iH1KhzPc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/i/oftp7x9gb23phyvig7k1.png)

在上面的示例中,我们使用了通配符[]并创建了一个命令ls [abs]*来获得所需的结果。

所以让我们分解命令

ls [abs]*哪里

*代表任意字符

[abs]表示以 a 或 b 或 s 开头的文件和文件夹

好的,到目前为止,我们已经看到了通配符*?[]的使用,现在让我们看看什么是类通配符以及我们如何使用它们

[通配符类命令](https://res.cloudinary.com/practicaldev/image/fetch/s--9bOYT1i8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/i/3f8n26imo89j1izlboi1.png)

上表包含最常用的类通配符。现在让我们通过一个例子来了解类通配符的使用。

  • 列出所有不以数字结尾的文件和文件夹

[通配符类数字](https://res.cloudinary.com/practicaldev/image/fetch/s--Pe3ZvkC7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/i/pyflnjprnb5hto0rzzyu.png)

在上面的示例中,我们使用了通配符[[:class:]]并创建了命令ls *[![:digit:]]来获得所需的结果。

所以让我们分解命令

ls *[![:digit:]]其中

*代表任意字符

!表示否定

[:digit:]代表任何数字

就像上面的例子一样,我们也可以使用其他类

好的,这就是通配符的全部内容,我们现在有一个强大的工具在我们的指尖。

所以我们已经完成了 Linux 系统中的通配符,在下一部分中,我们将从一些非常有用的命令开始,这些命令用于在 Linux 系统中操作文件和文件夹。

我希望你了解通配符和通配符在 Linux 系统中的使用。请让我知道是否有任何问题。

Logo

更多推荐