1. 程式人生 > >Linux——字符通配符

Linux——字符通配符

mmm secure 一個數 ESS code 用戶 str roo ssl

當我們使用 命令ls 來查看目錄或文件時,有時只需要查看特定的目錄或文件,這個時候便需要使用文件名通配符,也稱字符通配符。

在這裏需要特別說明,在cd /etc/後,轉到etc目錄下,使用 ls時,需要加上 選項 –d 這樣結果顯示目錄名或文件名,不會將目錄展開顯示。也可不加。

至於對ls命令的用法想了解的可自行查找。

接下來,我將對通配符通過舉例來進行解釋說明。

1.) * :用來匹配0或多個任意字符

例如: ls * 查找/etc下的任意字符的文件或目錄

[root@mmmm etc]# ls -d *
3dkdj                    maven
3fgfj                    mime.types
3fgfj[]                  mke2fs.conf
3jsjdl[]                 modprobe.d
abrt                     motd
acpi                     mtab



2.) ? :匹配任意1個字符,即一個字符匹配一個字符

例如 :ls ??? 查找/etc下的長度為任意三個字符的文件或目錄

[root@mmmm etc]# ls -d ???
253  786  hal  jvm  lvm  opt  ppp  rpm  ssh  X11  xml
333  gdm  ipa  kde  ntp  pki  rpc  scl  ssl  xdg  yum


3.) [0-9] :一個[0-9]只表示一個0-9之間的數字


例如 :ls [0-9] [1-2][0-9] 3[0-9]使用touch {1..100} 創建1到100這100個文件,顯示1-35

[root@mmmm etc]# ls  [0-9] [1-2][0-9] [3][0-5]
1   11  13  15  17  19  20  22  24  26  28  3   31  33  35  5  7  9
10  12  14  16  18  2   21  23  25  27  29  30  32  34  4   6  8


4.) [a-z] : 表示aAbBcC……z,無法顯示Z

[A-Z]: 表示AbBcC……Z,無法顯示z

[a-Z] : 表示所有大小寫字母

eg: 查找/etc 目錄下 開頭為任意字母的長度為三的文件或目錄

[root@mmmm etc]# ls -d [a-z]??
gdm  ipa  kde  ntp  pki  rpc  scl  ssl  xdg  yum
hal  jvm  lvm  opt  ppp  rpm  ssh  X11  xml

5.) [ae] : 表示是a或e的單一字符

[^ae] :表示即不是a也不是e的其他任意單一字符

eg: 只顯示/etc下的非隱藏目錄

[root@mmmm etc]# ls  -d /[^.]*
/app   /lib64       /proc     /tmp
/bin   /lost+found  /root     /usr
/boot  /media       /sbin     /var
/dev   /misc        /selinux  /VMwareTools-10.1.6-5214329.tar.gz
/etc   /mnt         /srv      /vmware-tools-distrib
/home  /net         /sys
/lib   /opt         /testdir

eg: 只顯示用戶家目錄下的非隱藏目錄

 1 [root@mmmm ~]# ls -1 /home/[^.]*
 2 /home/centos:
 3 Desktop
 4 Documents
 5 Downloads
 6 Music
 7 Pictures
 8 Public
 9 Templates
10 Videos
11 
12 /home/www:


6.) [:lower:]: 表示小寫字母
[:upper:]:表示大寫字母
[:alpha:]: 表示大小寫字母

eg: 顯示/etc目錄下,文件名至少包含一個小寫字母和一個數字並以.conf結尾的文件或目錄

(ps:選項-1為將ls 查找的結果單項列出)

1 [root@mmmm ~]#  ls -d1 /etc/*[[:lower:]]*[0-9]*.conf
2 /etc/krb5.conf
3 /etc/mke2fs.conf
4 /etc/pbm2ppa.conf
5 /etc/pnm2ppa.conf

7.) [:digit:] :表示任意數字 等於0-9
[:alnum:]: 表示任意字母及數字 等於a-Z0-9或用[[:digit:][:alpha:]]來表示

eg:顯示/etc目錄下,所有以一個大寫字母開頭,以兩個數字結尾的文件或目錄

1 [root@mmmm ~]# ls -d1 /etc/[[:upper:]]*[[:digit:]][[:digit:]]
2 /etc/Kdhu67
3 /etc/Ldf88
4 /etc/S0099
5 /etc/Sdjfdjg988
6 /etc/Sdjfdjg9897
7 /etc/X11

eg:顯示/var/log目錄下文件名包含符號及數字的文件或目錄

 1 [root@mmmm ~]# ls -d1  /var/log/*[[:punct:]]*[[:digit:]]*
 2 /var/log/btmp-20191120
 3 /var/log/cron-20191120
 4 /var/log/maillog-20191120
 5 /var/log/messages-20191120
 6 /var/log/secure-20191120
 7 /var/log/spooler-20191120
 8 /var/log/vmware-vgauthsvc.log.0
 9 /var/log/Xorg.0.log
10 /var/log/Xorg.0.log.old
11 /var/log/Xorg.9.log

8.)[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符 文件名不可能包含回車,故此處使用與[:blank:]:效果相同


9.)[:punct:]: 表示符號

使用方法見用法7中的例題。

Linux——字符通配符