开发工具LinuxLinux通配符的用法
lololowe在Linux中,通配符是代表一个或多个字符的特殊符号。通常用于匹配文件或目录,而正则表达式常用于匹配文件内容。
*
:匹配0个或多个字符
1 2 3 4 5 6 7 8 9
| ❯ ls /etc/*.conf /etc/adduser.conf /etc/deluser.conf /etc/host.conf /etc/logrotate.conf /etc/pnm2ppa.conf /etc/sudo.conf /etc/xattr.conf /etc/apg.conf /etc/e2scrub.conf /etc/kernel-img.conf /etc/mke2fs.conf /etc/resolv.conf /etc/sudo_logsrvd.conf /etc/appstream.conf /etc/fprintd.conf /etc/kerneloops.conf /etc/mongod.conf /etc/rsyslog.conf /etc/sys_config.conf /etc/brltty.conf /etc/fuse.conf /etc/ld.so.conf /etc/nftables.conf /etc/rygel.conf /etc/sysctl.conf /etc/ca-certificates.conf /etc/gai.conf /etc/libao.conf /etc/nsswitch.conf /etc/sensors3.conf /etc/ucf.conf /etc/debconf.conf /etc/hdparm.conf /etc/libaudit.conf /etc/pam.conf /etc/smi.conf /etc/usb_modeswitch.conf ❯ ls /etc/k* /etc/kernel-img.conf /etc/kerneloops.conf
|
?
: 匹配任意一个字符
1 2
| ❯ ls /etc/fsta? /etc/fstab
|
[]
: 匹配方括号内的任意一个字符
1 2 3 4 5 6 7 8 9
| ❯ ls /etc/[ab]*.conf /etc/adduser.conf /etc/apg.conf /etc/appstream.conf /etc/brltty.conf ❯ ls /etc/[!abc]*.conf /etc/debconf.conf /etc/fuse.conf /etc/kernel-img.conf /etc/libaudit.conf /etc/nftables.conf /etc/resolv.conf /etc/smi.conf /etc/sysctl.conf /etc/deluser.conf /etc/gai.conf /etc/kerneloops.conf /etc/logrotate.conf /etc/nsswitch.conf /etc/rsyslog.conf /etc/sudo.conf /etc/ucf.conf /etc/e2scrub.conf /etc/hdparm.conf /etc/ld.so.conf /etc/mke2fs.conf /etc/pam.conf /etc/rygel.conf /etc/sudo_logsrvd.conf /etc/usb_modeswitch.conf /etc/fprintd.conf /etc/host.conf /etc/libao.conf /etc/mongod.conf /etc/pnm2ppa.conf /etc/sensors3.conf /etc/sys_config.conf /etc/xattr.con ❯ ls /etc/[a-c]*.conf /etc/adduser.conf /etc/apg.conf /etc/appstream.conf /etc/brltty.conf /etc/ca-certificates.conf
|
注意:在Z Shell中,!
是一个特殊字符,用于引用历史命令,所以运行ls /etc/[!abc]*.conf
时,zsh会尝试找到一个历史命令,例如,该命令可能是以”abc”开头,由于它无法找到这样的命令,会返回”event not found”的错误。因此建议在bash中运行该命令。
{}
: 匹配花括号内的任意一个字符以及生成组合序列
1 2 3 4 5 6 7
| ❯ ls /etc/{a,b,c}*.conf /etc/adduser.conf /etc/apg.conf /etc/appstream.conf /etc/brltty.conf /etc/ca-certificates.conf ❯ ls /etc/{a..c}*.conf /etc/adduser.conf /etc/apg.conf /etc/appstream.conf /etc/brltty.conf /etc/ca-certificates.conf ❯ touch {1..5}.txt ❯ ls {1..5}.txt 1.txt 2.txt 3.txt 4.txt 5.txt
|
总结
通配符 |
含义 |
实例 |
* |
匹配0个或多个字符 |
a* 以a开头的任意文件 b*.txt 以b开头,中间有任意数量个字符,以.txt结尾的文件 |
? |
匹配任意单个字符 |
a?.txt 以a开头,中间有任意单个字符,以.txt结尾的文件 |
[] |
匹配方括号内的任意单个字符 |
[abc]* 以a、b或c开头,以任意字符结尾的文件 |
[a-z] |
匹配a到z范围内的任意一个字符, 表示范围,只能用于查找文件,不能用于创建文件 |
[a-z]* 以a到z范围内的任意一个字符开头,以任意字符结尾的文件 |
[!] |
匹配不在方括号内的任意单个字符 |
[!abc]* 不以a、b或c开头的任意文件 |
{a,b,c} , {a..z} |
以逗号分隔时表示单个字符,以两个句点分隔时表示范围。可用于查找和创建文件 |
{a,b,c}* 以a、b或c开头,以任意字符结尾的文件 {a..z}* 以a到z范围内的任意一个字符开头,以任意字符结尾的文件 touch {1..5}.txt 生成1到5的txt文件 |