在 bash 下,可以使用 * 来匹配零个或多个字符,用 ? 匹配一个字符
*
号
*.txt
查看当前目录下的所有 .txt 后缀的文件
[root@evan-01 ~]# ls
11.txt anaconda-ks.cfg ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt anaconda-ks.cfg.bak test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls *.txt
11.txt 1.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]#
*txt
查看当前目录下的所有 .txt 后缀的文件(写成 *.txt 和 *txt 是一样的)
[root@evan-01 ~]# ls
11.txt anaconda-ks.cfg ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt anaconda-ks.cfg.bak test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls *txt
11.txt 1.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]#
*txt*
把当前目录下带txt的文件都列出来
[root@evan-01 ~]# ls
11.txt anaconda-ks.cfg ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt anaconda-ks.cfg.bak test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls *txt*
11.txt 1.txt ojbk.txt test2_heard.txt test2.txt.bak test3_soft.txt test3.txt.bak
txtdir:
1.txt 2.txt 3.txt
[root@evan-01 ~]#
1*
把当前目录下带 1的所有文件和目录都列出来
[root@evan-01 ~]# ls
11.txt anaconda-ks.cfg ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt anaconda-ks.cfg.bak test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls 1*
11.txt 1.txt
[root@evan-01 ~]#
?号
代表任意的一个字符
[root@evan-01 ~]# touch 1.txt
[root@evan-01 ~]# touch 2.txt
[root@evan-01 ~]# touch 3.txt
[root@evan-01 ~]# ls
11.txt 2.txt anaconda-ks.cfg ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt 3.txt anaconda-ks.cfg.bak test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls ?.txt
1.txt 2.txt 3.txt
[root@evan-01 ~]#
[root@evan-01 ~]# touch a.txt
[root@evan-01 ~]# touch bb.txt
[root@evan-01 ~]# ls ?.txt
1.txt 2.txt 3.txt a.txt
[root@evan-01 ~]#
列出来的有 1.txt 2.txt 3.txt a.txt 没有 bb.txt 。因为 ? 只能代表任意的一个字符
[ ] 号
[0-3].txt 列出文件名0-3范围,后缀为.txt的文件
[root@evan-01 ~]# ls
11.txt 2.txt anaconda-ks.cfg a.txt ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt 3.txt anaconda-ks.cfg.bak bb.txt test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls [0-3].txt
1.txt 2.txt 3.txt
[root@evan-01 ~]#
[13].txt 列出文件名为1或3,后缀为.txt的文件
[root@evan-01 ~]# ls
11.txt 2.txt anaconda-ks.cfg a.txt ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt 3.txt anaconda-ks.cfg.bak bb.txt test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls [13].txt
1.txt 3.txt
[root@evan-01 ~]#
[1-3a-zA-Z].txt 列出文件名为1-3范围或a-z范围或A-Z范围,后缀为.txt的文件
[root@evan-01 ~]# ls
11.txt 2.txt anaconda-ks.cfg a.txt ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt 3.txt anaconda-ks.cfg.bak bb.txt test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls [1-3a-zA-Z].txt
1.txt 2.txt 3.txt a.txt
[root@evan-01 ~]#
{ } 号
{}号把所有要列出的文件名用 , 隔开放进来,也是或者关系
[root@evan-01 ~]# ls
11.txt 2.txt anaconda-ks.cfg a.txt ojbk.txt test2 test2.txt.bak test3.txt.bak
1.txt 3.txt anaconda-ks.cfg.bak bb.txt test test2_heard.txt test3_soft.txt txtdir
[root@evan-01 ~]# ls {1,3,a,bb}.txt
1.txt 3.txt a.txt bb.txt
[root@evan-01 ~]#