Linux上Bash Globbing的介绍

Linux上Bash Globbing的介绍

Bash Globbing是使用通配符来匹配多个文件名或路径的过程。Bash提供了几个可以用于球化的特殊字符,如*?[]

*字符是一个通配符,可以匹配文件名或路径中的零或多个字符。例如,命令ls *将列出当前目录下的所有文件,而命令ls *.txt将列出当前目录下所有扩展名为”.txt “的文件。

? 字符与*字符类似,但它只匹配单个字符。例如,命令ls ?.txt可以匹配 “a.txt “或 “b.txt “这样的文件名,但不能匹配 “abc.txt”

[]字符用于指定一个字符类,可以用来匹配属于该类的任何单个字符。例如,命令ls [abc]*.txt可以匹配 “a.txt”、”b.txt “或 “c.txt “这样的文件名,但不能匹配 “d.txt”

匹配任何字符串

在Bash中,通配符*可以用来匹配任何字符串。*字符是一个特殊字符,用于匹配文件名或路径中的任何数量的字符(包括零字符)。

例如,命令ls *将列出当前目录下的所有文件,无论其名称如何。命令ls *file*将列出当前目录下所有名称中含有 “file “字符串的文件。

你也可以使用*字符来匹配任何具有特定扩展名的文件,例如ls *.txt将匹配当前目录中所有扩展名为.txt的文件。

值得注意的是,Bash的globbing只对文件系统中的文件起作用,而不是对目录或命令输出。你可以使用其他命令,比如find或grep来匹配文件或命令输出中的字符串。

匹配单个字符

在Bash中,通配符? 可以用来匹配单个字符。? 字符类似于*字符,但它只匹配单个字符。当你需要匹配一个包括单个未知字符的特定模式时,这很有用。

例如,命令ls file?.txt将匹配 “filea.txt “或 “fileb.txt “这样的文件名,但不匹配 “fileabc.txt “或 “file.txt”。如果你想匹配所有以 “file “开头,以”.txt “结尾,但中间有一个额外字母的文件,这很有用

你还可以将? 字符与其他通配符结合使用。例如,命令ls file?*将匹配 “filea.txt “或 “fileabcd “或 “fileabc “这样的文件名。

你可以使用[]来匹配特定的字符集。例如ls file[abc]*.txt将匹配 “filea.txt”, “fileb.txt”, “filec.txt”,但不匹配 “filed.txt”。

匹配字符的范围

在Bash中,你可以使用方括号[]来指定一个字符范围,称为一个字符类,它可以用来匹配任何属于该类的单个字符。

例如,命令ls file[a-z].txt将匹配 “filea.txt “或 “fileb.txt “或 “filec.txt “到 “filez.txt “这样的文件名,而不是 “fileA.txt “或 “file1.txt”

你也可以在括号内使用感叹号!来否定该类,以匹配不在该类中的任何字符。例如,ls file[!a-z].txt将匹配 “fileA.txt “或 “file1.txt “这样的文件名,但不匹配 “filea.txt “或 “fileb.txt

你也可以指定多个范围,如[a-zA-Z]将匹配任何大写或小写字母的字符。这对于匹配文件名中一个特定模式的多种变化很有用。

值得一提的是,字符的范围是区分大小写的,globbing会根据范围内的字符相应地匹配文件名。

隐藏的文件

在基于Unix的系统中,包括Linux和macOS,以点.开头的文件和目录被视为隐藏文件。在使用ls等命令或在文件浏览器中查看一个目录的内容时,这些文件和目录通常默认不显示。

要在终端显示隐藏的文件和目录,你可以在ls命令中使用-a或-all选项。例如,命令ls -a将列出当前目录下的所有文件和目录,包括隐藏的文件和目录。

另外,你可以使用ls -A来显示所有的文件和目录,也包括隐藏的文件,但忽略”. “和”. “文件,它们分别被认为是当前和父目录。

你也可以使用ls -la来显示文件和目录,包括隐藏的文件,如权限、所有者和时间戳的详细格式。

隐藏文件也可以用bash中的通配符来匹配。例如,命令ls .*将匹配当前目录下的所有隐藏文件和目录。

结论

总之, Bash提供了几个特殊的字符, 如*, ?, 和[], 可以用于globbing, 也就是使用通配符来匹配多个文件名或路径的过程.*字符可以匹配任何字符串,?字符匹配单个字符,而[]字符允许你指定一个字符范围,称为字符类。

在Linux和macOS中,隐藏的文件和目录是以点开头的文件和目录。在使用ls等命令或在文件浏览器中查看目录内容时,通常默认不显示。要显示隐藏的文件和目录,你可以使用ls命令中的-a或-A选项。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础