Reputation: 405
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.
Upvotes: 5
Views: 8917
Reputation: 121167
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)
Upvotes: 16