5

I run

 dir.create('./junk_data') file.create(paste('./junk_data/QWE',01:12,01:31,2005:2015,'.3',sep='')) file.create(paste('./junk_data/RTY',01:12,01:31,2005:2015,'.3',sep='')) 

and want to list all the files that begin with QWE and end with 2011.3. I tried

list.files('./junk_data/',pattern='QWE....2011.3',full.names=T) 

and

list.files('./junk_data/',pattern='QWE....2011.3',full.names=T,perl=T) 

but I guess '.' doesn't mean one what I think, as I get none of the files I want.

I tried a few tutorials on regex, but no joy.

1
  • 1
    01 is 1 so 01:12 is 1, 2, ... 12. Perhaps you want to do something like sprintf("%02d", 1:12) Commented Jan 16, 2013 at 14:09

1 Answer 1

16

As Arun showed in his example, a dot usually means "match any character", so to match a dot you need to escape it: \\.. You can create the pattern most easily with glob2rx, which uses * as a wildcard and matches other characters as though they are fixed.

glob2rx("QWE*2011.3") #"^QWE.*2011\\.3$" list.files("./junk_data/", pattern = glob2rx("QWE*2011.3"), full.names = TRUE) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.