基于linux下的字符匹配

字符匹配:

建立文件:       touch "fi le" "fiale" "fiAle" "fi?le" "fi6le"

[[:alpha:]]     匹配单个字母     格式:

                      rm -fr fi[[:alpha:]]le

结果如下图所示:


[[:lower:]]     匹配单个小写字母

[[:upper:]]     匹配单个大写字母

[[:digit:]]     匹配单个数字

[[:alnum:]]     匹配单个数字或字母

[[:punct:]]     匹配单个符号

[[:space:]]     匹配单个空格


当我们没有加通配符时候每次删除都要询问是否删除,加上通配符之后就会把相应功能的文件删除掉,我们在操作时候可以上下翻命令,为了更好地呈现效果,每次我们删除掉之后重新建立一下所有文件以便观察。再就是需要每天练习熟悉相应的命令。

练习:将etc目录下面的带数字的还有.conf文件移出来到桌面:

cp /etc/*[[:digit:]]*.conf .

这个命令中一个就是*代表匹配所有字符,然后.代表就是移动到当前路径。


[^[:digit:]] [![:digit:]]指不是数字的两种表示方法,意味着^和!的功能一样。这个有时候在我们删除文件时候也特别有用,呈现如下:如下图我们可以很明显的看到除了字母数字其他的全部被删除了。


{}指定的目标 touch file{1..3}

指定的目标的意思就是比如touch file{1..3},即建立三个文件file1,file2,file3。


{1..9}          1-9

{a..f}          a-f

{1,3,5}         135     (逗号的功能就是表示具体的1,3,5三个文                              件)

{a,c,e}         a c e     (指具体的a c e文件)

{1..3}{a..c}    1a 2a 3a 2a 2b 2c 3a 3b 3c

touch file{a..c}{1..3}指九个,排列的方式。


生成文件的部分截图如下,实际上应该有6*9=54个文件。


[]模糊的目标touch file[1-3]

[]表示模糊匹配,里面的内容是条件

[a-C]                 aA bB cC

[a-c]                 aA或者bB或者c

[1-3]                 1或者2或者3

[145]                 或者4或者5

[^abc] [!abc]          除了a并且除了b并且除了c


rm -fr file[26]      指2或者6,意思移除file2和file6。

rm -fr file[!26]*      指不是2或者6,意思将建立的文件夹全部删除加上删除的2和6。



模糊的目标的意思就是里面的文件是或者关系,touch file[1-3]表示建立文件一或者文件二或者文件三。并不要求全部都有。

举个例子:比如file3就可以和touch file[1-3]匹配,而不可以和touch file{1..3}匹配,因为后者要求一二三文件均存在。

练习:

用命令和正则表达式按照要求建立文件

用一条命令建立 12 个文件 WESTOS_classX_linuxY(X 的数值范围为 1-2 , Y 的数值范围为(1-6)

touch WESTOS_class{1..2}linux{1..6}

这些文件都包含在 root 用户桌面的 study 目录中

mkdir study

mv WESTOS_class* study

用一条命令建立 8 个文件 redhat_versionX ( x 的范围为 1-8 )

touch redhat_version{1..8}

redhat_virsionX 这些文件都包含在 /tmp 目录中的 VERSION 中

mkdir /tmp/VERSION

mv redhat_version* /TMP/VERSION

管理刚才新建立的文件要求如下

用一条命令把 redhat_versionX 中的带有奇数的文件复制到桌面的 SINGLE 中

mkdir SINGLE

mv /tmp/VERSION/redhat_version{1,3,5,7} SINGLE

用一条命令把 redhat_versionX 中的带偶数数的文件复制到 /DOUBLE 中

mkdir DOUBLE

mv /tmp/VERSION/redhat_version{2,4,6,8} DOUBLE

用一条命令把 WESTOS_classX_linuxY 中 class1 的文件一动到当前用户桌面的 CLASS1 中

mkdir CLASS1

mv /study/WESTOS_class[1]linux* CLASS1

用一条命令把 WESTOS_classX_linuxY 中 class2 的文件一动到当前用户桌面的 CLASS2 中

mkdir CLASS2

mv /study/WESTOS_class[2]linux* CLASS2

备份 /etc 目录中名字带有数字并且以 .conf 结尾的文件到桌面上的 confdir 中

CP /etc/*[[:digit:]]*.conf .

删掉刚才建立或者备份的所有文件

rm -rf*

rm -rf /tmp/VERSION*

部分截图如下:




***对于作业就是得多练习,再就是我们做题之前要学会观察,比如移动目录时我们要先观察目录是否存在,不存在的话先建立然后进行其他操作。还有我们得对ls命令熟练掌握,这个可以帮助我们观察作业的正确性,最后就是注意绝对路径还有就是注意别犯一些打错字符缺少字符的小毛病!

猜你喜欢

转载自blog.csdn.net/aaaaaab_/article/details/80673978
今日推荐