在查找正则表达式中扩展变量

时间:2012-07-27 10:05:55

标签: bash

有没有办法以下面的方式扩展变量?在这种情况下

X=$(date --date=yesterday +%Y-%m-%d)
echo $X #--> 2012-07-26

以下命令有效,但即使日期为25,$X也会被视为空,并选择*。是否有专门扩展该变量的方法?

find . -maxdepth 1 -type f -regex '.*\(/\asyncprocessor.log.'$X'*\|/Renewal.log.'$X'*\|/Scheduler.log.'$X'*\|/smsprocessor.log.'$X'*\|/Subscription.log.'$X'*\).*' -exec ls -ltr {} \;

2 个答案:

答案 0 :(得分:2)

如果您简化了正则表达式,问题就会变得更加清晰:

'.*/Scheduler.log.'$X'*.*

$ X后的点表示最后一个字母可以重复零次。在它之前插入一个点。

此外,请删除a之前的反斜杠,也可以在使用.*时删除开头的maxdepth 1

更新:这项工作对我来说:

find . -maxdepth 1 -type f -regex './\(asyncprocessor\|Renewal\|Scheduler\|smsprocessor\|Subscription\).log.'$X'.*' -exec ls -ltr {} \;

答案 1 :(得分:0)

2012-07-26 * in regex意味着2012-07-2之后是6(0次或更多次)。

也许你想要2012-07-26。*(。*:任何字符0或更多时间)

如果$ x可以包含空格,请使用双引号,例如:“$ x”

确切地说是圆点。必须逃脱\。否则他们匹配任何角色, 而且一个角色不需要被转义