2012-07-27 53 views
0

有沒有辦法以下面的方式展開變量?在這種情況下在查找正則表達式中展開一個變量

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

同時要求在serverfault:http://serverfault.com/q/411797/30957 – 2012-07-27 11:56:31

回答

0

2012-07-26 *在正則表達式中意思是2012-07-2其次是6(0或更多次)。

也許你想2012-07-26 *(*:任何字符0或更多的時間)

如果$ x可以包含空格用雙引號,如: 「$ X」

要確切的點。必須逃脫\。否則他們匹配任何字符, 和字符不需要進行轉義

2

如果您簡化正則表達式,這個問題變得更清晰辨認:

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

$ X後的點意味着最後一個字母可以重複零次。在它之前插入一個點。

另外,由於您使用的是maxdepth 1,所以在開始之前刪除a之前的反斜槓,並且可能還需要刪除.*

更新:這項工作對我來說:

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

都能跟得上沒有工作 – mannoj 2012-07-27 11:09:03

+0

@mannoj:更新了結果。 – choroba 2012-07-27 11:24:38

+0

非常感謝Choroba,它的作品在你的方法..! – mannoj 2012-07-27 11:30:50

相關問題