nux系统中的# 个通配符
在之前的帖子中,我们学到了以下内容: 1.使用pwdfind我们当前的工作目录 2.cd进入一个目录 3.lsto list 目录内容 4.file确定文件的内容 5.less查看文本文件内容 现在似乎缺少的是我们如何操作文件和目录/文件夹。 但是在我们开始操作文件和文件夹之前,我们需要了解一些其他的东西。 由于 Linux 系统大量使用文件名,它为我们提供了特殊字符来帮助我们快速指定文件名组。这
在之前的帖子中,我们学到了以下内容:
1.使用pwd
find我们当前的工作目录
2.cd
进入一个目录
3.ls
to 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
[](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
[](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 系统中的使用。请让我知道是否有任何问题。
更多推荐
所有评论(0)