shell脚本中使用正则的方法

请教大家关于脚本中使用正则的问题,我想写一个自动删除当前月之前日志的脚本DIR=/root/testMONTH=`/bin/date+%Y-%m`FILENAME=`/b... 请教大家关于脚本中使用正则的问题,我想写一个自动删除当前月之前日志的脚本

DIR=/root/test
MONTH=`/bin/date +%Y-%m`
FILENAME=`/bin/ls /root/test/ > /root/filename`

while read LINE ; do
if [ $LINE != "localhost.$MONTH-*.log" ];then
/bin/rm -f $DIR/$LINE
fi
done < /root/filename

我想让$MONTH后面的.*表示任意长度任意字符。可是在执行的时候脚本并没有进行正则匹配。直接就使用字符* 为什么不进行匹配呢?
展开
 我来答
cutroot
推荐于2016-10-15 · TA获得超过334个赞
知道答主
回答量:126
采纳率:0%
帮助的人:122万
展开全部
双引号里*不扩展。
test命令字符串比较是一对一的。即使*扩展了,也会报语法错误。
如果检测字符串是否匹配模式,可以使用grep命令。
echo 字符串 | grep -q -s "正则"
匹配返回true,否则是false。

下面的命令可以实现你的需求。
find /root/test -type f ! -name "localhost.`/bin/date +%Y-%m`-*.log" | xargs rm -f
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式