0

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

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

以下命令有效,但即使日期为 25, $X也被视为 null 并选择*。有没有办法专门扩展该变量?

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

2 回答 2

2

如果你简化你的正则表达式,问题就会变得更清楚:

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

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

此外,a.*您使用maxdepth 1.

更新:这对我有用:

find . -maxdepth 1 -type f -regex './\(asyncprocessor\|Renewal\|Scheduler\|smsprocessor\|Subscription\).log.'$X'.*' -exec ls -ltr {} \;
于 2012-07-27T10:41:49.110 回答
0

正则表达式中的 2012-07-26* 表示 2012-07-2 后跟 6(0 次或更多次)。

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

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

确切地说是点。必须转义\。否则它们匹配任何字符,并且 a 字符不需要转义

于 2012-07-27T10:39:14.553 回答