前言
extglob模式开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 不然不识别!
方法1:
开启命令: shopt -s extglob 关闭命令: shopt -u extglob 5个模式匹配操作符 1. ?(pattern-list) - 所给模式匹配0次或1次; 2.*(pattern-list) - 所给模式匹配0次以上包括0次; 3.+(pattern-list) - 所给模式匹配1次以上包括1次; 4.@(pattern-list) - 所给模式仅仅匹配1次; 5.!(pattern-list) - 不匹配括号内的所给模式。
案例
反选删除文件: (打开extglob模式) shopt -s extglob rm -fr !(file1) 多个要排除的: rm -rf !(file1|file2)
方法2:
删除当前目录下所有 *.txt文件,除了test.txt
rm `ls *.txt|egrep -v test.txt`
#或者
rm `ls *.txt|awk '{if($0 != "test.txt") print $0}'`
#排除多个文件
rm `ls *.txt|egrep -v '(test.txt|fff.txt|ppp.txt)'`
rm -f `ls *.log.1|egrep -v '(access-2010-09-06.log|error-2010-09-06.log)'`
rm -f `ls *.log|egrep -v '(access-2010-09-06.log|error-2010-09-06.log)'`
rm -f `ls *.log|egrep -v '(20100906.log)'`
注意:上面所用的符号是‘`’,而不是单引号
rm -rf `ls |egrep -v bb` 删除所有,保留bb 目录
转载于:https://blog.51cto.com/14055961/2386129