R
has a function to list files in a directory, which is list.files()
. It comes with the optional parameter pattern=
to list only files that match the pattern.
Files in directory data
:
File1.csv File2.csv new_File1.csv new_File2.csv
list.files(path="data", pattern="new_")
results in [1] "new_File1.csv" "new_File2.csv"
.
But how can I invert the search, i.e. list only File1.csv
and File2.csv
?
I belive you will have to do it yourself, as list.files
does not support Perl regex (so you couldn't do something like pattern=^(?!new_)
).
i.e. list all files then filter them with grep
:
grep(list.files(path="data"), pattern='new_', invert=TRUE, value=TRUE)
The grep(...)
does the pattern matching; invert=TRUE
inverts the match; value=TRUE
returns the values of the matches (i.e. the filenames) rather than the indices of the matches.
I think that the simplest (and probably fastest if you include programmer time) approach is to run list.files
2 times, once to list all the files, then the second time with the pattern of files that you do not want, then use the setdiff
function to find those file names that are not in the group that you want to exclude.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With