Linux拓展通配符的使用

          最近学习Linux程序设计,涉及到关于通配符的使用问题,在看了书之后有了一些心得,现在分享如下。

       常用通配符有:*,?。“ * ”是用来匹配多个字符的,而“?”则是用来匹配单个字符的。然而,有的时候我们可能只是想匹配某几个字符串或者几个字符,这个时候拓展通配符就可以派上用场了。

       拓展通配符有“[...]”,"{..,..}"两种,前一个是对中括号内的单个字符进行匹配,如【abc】就是匹配a或者b或者c这3个字符,在【后面加上" ! "或者“ ^ ”,就可以实现非匹配的模式,如【!abc】或者【^abc】就可以匹配出了a、b、c之外的字符了;而" {} "则是匹配多个字符串的,中间用逗号隔开,如{abc,bcd},就是匹配abc或者bcd这2个字符串。

       下面就具体的案例进行实际的解释:

       假设当前文件夹下有以下文件:

       我们想要实现分类的效果,把属于c的文件放到c的文件夹里面,而属于Java的文件放到Java文件夹里面,把属于shell脚本的文件放到shell文件夹里面,而且不能把move文件放进去,因此,我们可以写一个如下所示的程序来实现分类的效果:

for file in $(ls *.{java,class})
do
	mv $file java/
done

for file in $(ls *.{[coh],out,cpp})
do
	mv $file c/
done

for file in $(ls *.sh)
do
	if echo $file | grep "move"
	then
		echo $file
	else
		mv $file shell/
	fi
done
exit 0

       最前面的{java,class}就是把匹配文件后缀为java和class的给提取出来,而c语言的文件有点多,后缀有c、o、h、out、cpp,这时候就用到两个的合用,{[coh],out,cpp}就是把这些匹配的都提取出来。而第三个就麻烦了一些,因为要防止我们的脚本文件被提取出来,所以加了个判断。

       这就是我对通配符和拓展通配符的一些小的见解,如有问题,欢迎指正大笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值