should dir(all=TRUE) return "." and ".."?
On Fri, 23 Sep 2011, Martin Maechler wrote:
William Dunlap <wdunlap at tibco.com>
on Fri, 23 Sep 2011 15:49:43 +0000 writes:
> dir(all=TRUE) returns the file names "." and ".." while > dir(recursive=TRUE, all=TRUE, include.dirs=TRUE) does not. > I always filter out the "." and ".." entries and was > wondering if anyone would mind if dir(all=TRUE) just > omitted them? It might make recursive file operations > like cleaning out a directory safer, as > unlink(recursive=TRUE, dir(all=TRUE, "dirToClean")) might > start attacking dirToClean/.., then dirToClean/../.., > etc., until your disk is empty.
:-) Thank you, Bill. I agree that there is a problem. It seems wrong to me that dir(all.files=TRUE, recursive=TRUE, include.dirs=TRUE) *omits* the (symbolic) directories '.' and '..' when simple dir(all.files=TRUE) includes them.
It was intentional. The authors of that part wanted it that way, the original author of list.files (aka dir) wanted this the way it was before include.dirs was added.
However, from a strict description (of the argument names, and also the help file) I would have expected that both would *include* rather than omit them. But then --the scenario abov, and also more general reasoning -- would rather suggest to follow your proposal.
Someone would need to check for back-compatibility though: list.files() has been around for a long time. There are lots of odder things about list.files(), for example that it lists directories with recursive=FALSE and not with recursive=TRUE. So is a directory a file or not?
Martin
>> dir.create(tdir <- tempfile("tdir"))
>> file.create(file.path(tdir, c(".dotFile", "noDotFile")))
> [1] TRUE TRUE
>> dir.create(file.path(tdir, ".dotDir"))
>> file.create(file.path(tdir, ".dotDir",
>> c("noDotFileInDotDir", ".dotFileInDotDir")))
> [1] TRUE TRUE
>> dir(tdir, all=TRUE) # omit "." and ".." here?
> [1] "." ".." ".dotDir" ".dotFile" [5] "noDotFile"
>> dir(tdir, all=TRUE, recursive=TRUE, include.dirs=TRUE)
> [1] ".dotDir" ".dotDir/.dotFileInDotDir" [3] > ".dotDir/noDotFileInDotDir" ".dotFile" [5] "noDotFile"
> Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595