强大的bash通配符– 2.0
如果没有这些名为shell通配符的酷小东西,在Linux命令行上工作是非常痛苦的。 因此,请确保充分利用通配符。
< 什么是shell通配符 >
通配符 是一个Shell功能,使命令行比任何GUI文件管理器都强大。 您会看到,如果要在图形文件管理器中选择一大组文件,通常必须使用鼠标来选择它们。 这看似简单,但在某些情况下可能非常令人沮丧。 例如,假设您有一个包含大量各种文件和子目录的目录,并且您决定将所有在其名称中间带有“ linux”一词的HTML文件从该大目录移至另一个目录。 有什么简单的方法可以做到这一点? 如果目录中包含大量不同名称的HTML文件,那么您的任务就很简单!
在Linux CLI中,该任务的执行与仅移动一个HTML文件一样简单,并且由于执行 贝壳通配符。 通配符是特殊字符,可让您选择与某些字符模式匹配的文件名。 这可以帮助您仅输入几个字符就可以选择一大组文件,并且在大多数情况下,这比用鼠标选择文件更容易。
这是bash中最常用的通配符的列表:
通配符 | 火柴 |
* | 零个或多个字符 |
? | 一个字符 |
[ABCDE] | 正好列出一个字符 |
[AE] | 在给定范围内只有一个字符 |
[!ABCDE] | 任何未列出的字符 |
[!AE] | 任何不在给定范围内的字符 |
{的Debian,LINUX} | 在给出的选项中只有一个完整的单词 |
您可以将通配符与任何接受文件名作为参数的命令一起使用。
< 通配符示例 >
让我们举几个例子。 *字符可能已经为您所熟悉,因为它在许多其他地方也得到了广泛的使用,而不仅仅是在Linux中。 例如,以下内容从当前目录中删除每个文件:
$ rm *
以下命令将名称中带有“ linux”一词的所有HTML文件从工作目录移动到名为 dir1
:
$ mv *linux*.html dir1
看,我告诉过你,移动多个文件就像移动一个文件一样简单!
以下显示以开头的所有文件 d
结束 .txt
:
$ less d*.txt
以下命令将删除名称以其开头的所有文件 junk.
,接下来是三个字符:
$ rm junk.???
使用此命令可以列出名称以其开头的所有文件或目录 hda
,后面跟着一个数字:
$ ls hda[0-9]
这将列出以。开头的所有文件或目录 hda
,接下来是两个数字:
$ ls hda[0-9][0-9]
以下列出名称以其中任何一个开头的所有文件或目录 hd
or sd
,之后是任何单个字符 a
和 c
:
$ ls {hd,sd}[a-c]
此命令将所有以大写字母开头的文件复制到目录 dir2
:
$ cp [A-Z]* dir2
这将删除所有不以结尾的文件 c
, e
, h
or g
:
$ rm *[!cehg]
我可以继续这些例子,但你明白了。 您可以使用简单模式或组合不同的通配符并构建非常复杂的模式,就像我之前所说的,您可以将它们与任何接受文件名作为参数的命令一起使用。