当前位置: 首页 > 工具软件 > shell > 使用案例 >

Shell中的通配符

张翰音
2023-12-01

1、通配符

在 Bash 中,如果需要模糊匹配文件名或目录名,就要用到通配符。下面为常用的通配符。

通配符说明
*匹配0或任意个字符
匹配一个任意字符
[-]匹配中括号的字符。例如[a-b],匹配小写字母,只会匹配集合中的一个
[^]匹配除了中括号的一个字符。例如[^0-9],匹配除了数字的字符,只会匹配集合中的一个
{ab,ba}匹配其中一个字符串。例如匹配ab或ba

2、容易混淆的通配符和正则表达式

  • 区别1:
    通配符:匹配文件名
    正则表达式:匹配文件中的内容
    误区:例1、查找文件名时,常用正则表达式

    #查找mv开头文件,通配符用法
    [root@VM_0_6_centos tmp]# ll -d mv*
    drwxr-xr-x 2 root root 4.0K Feb 24 17:32 mv2
    -rw-r--r-- 1 root root    0 May 14 12:07 mva
    -rw-r--r-- 1 root root    0 May 14 12:09 mvabc
    #如果正则用法,会查找不到文件
    [root@VM_0_6_centos tmp]# ll -d mv.*
    ls: cannot access mv.*: No such file or directory
    

    例2、查找文件内容时,用的是正则,例如常用Linux三剑客之一的grep

    #查找def开头的行
    [root@VM_0_6_centos DCBreakfast]# grep ^def view.py 
    def effective_user(request):
    def download_apk(request):
    def ftpserver_version(request):
    
    
  • 区别2:
    通配符:匹配完整的文件名
    正则表达式:匹配部分文本
    例1:正则在abab字符串中查找a字符
    [root@VM_0_6_centos tmp]# grep a mva
    abab

  • 区别3:
    正则表达式的*和?量词和通配符不一样

3、转义特殊字符

通配符是在Shell中有特殊含义的字符,例如*是代表着匹配0或任意个字符,那么这些字符就无法代表它们本身。如果要使用这些特殊字符本身的意义,使用转义符反斜杠:\

参考“Shell中的通配符”https://www.jianshu.com/p/25f3d0cd5fdc

 类似资料: