Linux中强大的bash通配符

强大的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

这将删除所有不以结尾的文件 ceh or g:
rm *[!cehg]

我可以继续这些例子,但你明白了。 您可以使用简单模式或组合不同的通配符并构建非常复杂的模式,就像我之前所说的,您可以将它们与任何接受文件名作为参数的命令一起使用。