linux globbing文件名通配
程序员文章站
2022-03-22 23:08:03
globbing:文件名通配 元字符: :匹配任意长度的任意字符 ?:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [a z]或者[A Z]或者[[:alpha:]]:匹配任意一个字母 [[:upper:]]:匹配任意一个大写字母 [[:lower:]]:匹配任意一个大写字母 [0 9]或者 ......
globbing:文件名通配
-
元字符:
*:匹配任意长度的任意字符
?:匹配任意单个字符
-
[]:匹配指定范围内的任意单个字符
[a-z]或者[a-z]或者[[:alpha:]]:匹配任意一个字母
[[:upper:]]:匹配任意一个大写字母
[[:lower:]]:匹配任意一个大写字母
[0-9]或者[[:digit:]]:匹配任意一个数字
[a-z0-9]或者[[:alnum:]]:匹配任意一个字母和数字
[[:space:]]:匹配一个空格
-
[[:punct:]]:匹配任意一个表达符号
$ touch "p,;a" $ ls p[[:punct:]][[:punct:]]a p,;a
-
[^]:匹配指定范围外的任意单个字符
- [^[:upper:]]:匹配非大写字母的任意字符。
- [^0-9]:匹配非数字的的任意字符。
- [^[:alnum:]]:匹配非字母和数字的任意字符。
如果想touch一个文件名里有空格的文件,怎么办?
使用\。下面例子创建的文件名【a d】,a和d中间有2个空格。
或者使用“”,把文件名括起来。
$ touch a\ \ d $ touch "a d"
练习1:显示/var目录下,所有以l开头,以一个小写字母结尾,且中间出现1位任意字符的文件或目录
# ls -ld /var/[l]?[[:lower:]] drwxr-xr-x. 66 root root 4096 dec 9 14:20 /var/lib drwxr-xr-x. 21 root root 4096 dec 15 18:26 /var/log
练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录。
# ls -d /etc/[[:digit:]]*[^0-9] /etc/4afdsf@
练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录
# ls -d /etc/[^[:alpha:]][[:alpha:]]* /etc/4afdsf
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录,到/tmp/tp1目录。
# cp -r /etc/m*[^0-9] /tmp/tp1
练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录, 到/tmp/man目录下。
# cp -r /usr/share/man/man[0-9] /tmp/man
练习6:复制/etc目录下,所有以.conf结尾,其以m,n,r,p开头的文件或目录,到/tmp/conf.d目录下。
# cp -r /etc/[mnrp]*.conf /tmp/conf.d
c/c++ 学习互助qq群:877684253
本人微信:xiaoshitou5854