8.4-通配符

在 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 ~]# 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章