有没有办法以下面的方式扩展变量?在这种情况下
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 {} \;
答案 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”
确切地说是圆点。必须逃脱\。否则他们匹配任何角色, 而且一个角色不需要被转义