[Rd] should dir(all=TRUE) return "." and ".."?

Martin Maechler maechler at stat.math.ethz.ch
Fri Sep 23 18:59:33 CEST 2011


>>>>> 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.

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.

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



More information about the R-devel mailing list