一:文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件
通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符
二:常见的通配符如下:
- 匹配零个或多个字符,但不匹配 “.” 开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~lx 用户lx家目录
[0-9] 匹配数字范围
[a-z] 一个字母
[A-Z] 一个字母
[li] 匹配列表中的任何的一个字符
[^li] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
. 和 ~+ 当前工作目录
~- 前一个工作目录
三:另外还有在Linux系统中预定义的字符类表示法如下:
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
四:练习题目。
1、显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录列表
ls /etc/i*[0-9]*[a-z] #会出现大写字母
[root@rocky-8 ~]# ls /etc/i*[0-9]*[[:lower:]]
2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录列表
[root@rocky-8 ~]# ls -d /etc/[0-9]*[^0-9]
3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录列表
ll -d /etc/[^a-z]*
4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录列表
[root@rocky-8 ~]# ls -l /etc/rc[0-6]*
5、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录列表
root@rocky-8 ~]# ls -al /etc/[nmrp]*.conf
6、只显示/root下的隐藏文件和目录列表
[root@rocky-8 ~]# ll -d /root/.*
7、只显示/etc下的非隐藏目录列表
[root@rocky-8 ~]# ls -d /etc/*/
8,将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@rocky-8 etc]# cat /etc/issue | tr [:lower:] [:upper:] > /tmp/issue.out
tr替换文本:例子:
```bash
[root@localhost zhangy]# echo "TANK" |tr A-Z a-z #大写字母转小写
tank
[root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z #小写字线转大写
TANK ZHANG
[root@localhost zhangy]# cat aaa.txt #原文件
aaa
bbb
[root@localhost zhangy]# cat aaa.txt|tr 'a' 'c' #字母c替换字母a
ccc
bbb
[root@localhost zhangy]# cat aaa.txt|tr -d 'a' #删除所有字母a
bbb
[root@localhost zhangy]# cat aaa.txt|tr -d '\n\t' 删除文件file中出现的换行'\n'、制表'\t'字符
aaabbb
[root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z] #删除重复的字母
a
b
[root@localhost zhangy]# cat aaa.txt|tr -s '\n' #删除空行
aaa
bbb
[root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040' #用空格符\040替换制表符\011
aaa
bbb
[root@localhost ]tr a c < test #将test文件中的a变成c
(1) 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a,
/testdir/dir1/y/b
[root@rocky-8 testdir1]# mkdir -p /testdir3/dir1/{y/a,x/{a,b}}
(2) 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b
[root@centos7 /]# mkdir -p /testdir/dir2/{x/{a,b},y}
(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
[root@centos7 ]# mkdir -p /testdir9/dir{{3..4},5/dir{6..7}}