globbing文件名通配机制:
Linux下一切皆文件,那么为了更好的管理文件,Shell提供了一组称为通配符的特殊符号,用于模式匹配,如文件名匹配、路径名搜索、字符串查找等;用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,以在执行过程中进行模式匹配。所谓通配是指:显示以指定条件的文件。如显示/var文件下a开头的目录或文件,至于a后面是什么我们不管,因此我们可以使用ls -d /var/a*。
通配符及其说明:
*:匹配任意长度的任意字符;
?:匹配任意单个字符
[ ]:匹配制定范围内的任意单个字符有几种特殊格式:
[a-z] 、[A-Z] 、[0-9] 、 [a-z0-9] 、
[[:upper:]] 表示所有大写字母
[[:lower:]] 表示所有小写字母
[[:alpha:]] 表示所有字母
[[:digit:]] 所有数字
[[:alnum:]] 所有字母和数字
[[:space:]] 所有空白字符
[[:punct:]] 所有符号字符
[^] 匹配指定范围外的任意单个字符
练习:
1、显示/var目录下所有以l开头,以一个小写字母结尾,且重甲你至少出现一位数字(可以有其他字符)的文件或目录。
2、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录;
3、显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录;
4、在tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22;
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中;
6、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中;
7、复制/etc目录下所有以l或m或n开头,以,conf结尾的文件至/tmp/mytest3目录中;
参考答案:
1、
[root@azhuman var]# ls -d /var/l*[0-9]*[[:lower:]]
/var/l954l /var/laaa9aaaa
2、
[root@centos6 etc]# ls -d /etc/[[:digit:]]*[^[:digit:]]
/etc/12345aaa /etc/1sbzzz /etc/1sbzzz!
3、
[root@centos6 etc]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/1aaaaaa666 /etc/1sbzzz /etc/1sbzzz! /etc/2aaaa /etc/3A6b
4、
[root@centos6 tmp]# mkdir tfile-$(date +"%Y-%m-%d-%H-%M-%S")
[root@centos6 tmp]# ll
total 32
drwxr-xr-x. 2 root root 4096 Feb 18 12:50 tfile-2019-02-18-12-50-47
5、
[root@centos6 mytest1]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
[root@centos6 mytest1]# ll
total 320
drwxr-xr-x. 2 root root 4096 Feb 18 13:32 pam.d
drwxr-xr-x. 3 root root 4096 Feb 18 13:32 pango
-rw-r--r--. 1 root root 1834 Feb 18 13:25 passwd
-rw-r--r--. 1 root root 1362 Feb 18 13:25 pbm2ppa.conf
-rw-r--r--. 1 root root 2872 Feb 18 13:25 pinforc
-rw-r--r--. 1 root root 370 Feb 18 13:25 pm-utils-hd-apm-restore.conf
6、
[root@centos6 tmp]# cp -r /etc/*.d /tmp/mytest2
[root@centos6 mytest2]# ll
total 112
drwxr-xr-x. 2 root root 4096 Feb 19 06:25 bash_completion.d
drwxr-xr-x. 2 root root 4096 Feb 19 06:25 chkconfig.d
drwxr-xr-x. 2 root root 4096 Feb 19 06:25 cron.d
7、
[root@centos6 mytest2]# cp -r /etc/[lmn]*.conf /tmp/mytest3
[root@centos6 mytest2]# cd /tmp/mytest3
[root@centos6 mytest3]# ll
total 52
-rw-r--r--. 1 root root 1662 Feb 19 06:35 latrace.conf
-rw-r--r--. 1 root root 28 Feb 19 06:35 ld.so.conf
-rw-r-----. 1 root root 191 Feb 19 06:35 libaudit.conf