In your case, this is quite simple:
\b(?:2010/12/(?:3[01]|2[5-9])|2011/01/01)\b
will match a string containing a date in the range you specify. But usually regular expressions are not suitable for matching date ranges. This is always an opportunity, but rarely good.
For example, for the range 2003/04 / 25-2011 / 04/04 you get
\b(?: 2003/04/(?:30|2[5-9])| 2003/(?:(?:0[69]|11)/(?:30|[12][0-9]|0[1-9])|(?:0[578]|1[02])/(?:3[01]|[12][0-9]|0[1-9]))| 2011/04/0[1-4]|2011/(?:02/(?:[12][0-9]|0[1-9])|0[13]/(?:3[01]|[12][0-9]|0[1-9]))| (?:2010|200[4-9])/(?:02/(?:[12][0-9]|0[1-9])|(?:0[469]|11)/(?:30|[12][0-9]|0[1-9])|(?:0[13578]|1[02])/(?:3[01]|[12][0-9]|0[1-9])) )\b
If I had to do something similar (and could not use the creation dates in the file attributes), I would either use RegexMagic (to create a regular expression for the date range) and PowerGREP (to do grepping) if this is a one-time job, but they are available only on windows. If I had to do this more often, I would write a small Python script that looks at my directory tree, analyzes the date for each directory, checks to see if it is in a range, and then looks at the files in that directory.
Tim pietzcker
source share