[Rd] Non-recursive way to remove empty directory on Windows?
Martin Maechler
maechler at stat.math.ethz.ch
Fri Nov 30 11:47:07 CET 2012
>>>>> William Dunlap <wdunlap at tibco.com>
>>>>> on Thu, 29 Nov 2012 02:36:54 +0000 writes:
>> (even worse, path may contain '..' or
>> likewise from a list.files(all.names=TRUE) call)
> Would anyone's code break if "." and ".." were never in the output of
> list.files() (or dir())? I find it tedious to skip them
> whenever doing anything recursive in the file system. They are
> not in the output of the unix find command and no one misses them
> there.
At first, I've tended to agree with your implicit proposal.
I wouldn't be suprised if someone's code broke from such a
change, but then I think "Some One" gets what (s)he deserves ...
But I'm less sure now that I've looked into the issue in more
details:
If you use
(1) list.files(*, all.files=TRUE) # sic! 'all.names' does not exist
you implicitly say 'recursive=FALSE' , where
(2) list.files(*, recursive=TRUE, ...)
implicitly contains 'include.dirs=FALSE'
on which the help page says
include.dirs: logical. Should subdirectory names be included in
recursive listings? (There always are in non-recursive ones).
{with a typo s/There/They/ which I've corrected just now}
Hence, call (2) always excludes "." and ".."
Would you reall see the need for an option to exclude "." and ".." also from
the non-recursive calls?
Martin Maechler, ETH Zurich
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>> -----Original Message-----
>> From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org] On Behalf
>> Of Henrik Bengtsson
>> Sent: Wednesday, November 28, 2012 6:25 PM
>> To: R-devel
>> Subject: [Rd] Non-recursive way to remove empty directory on Windows?
>>
>> Hi,
>>
>> file.remove(path) will remove an empty directory "on most Unix
>> platforms", but not on Windows, cf. help("file.remove"). A workaround
>> for Windows is then unlink(path, recursive=TRUE). However, unless
>> you're really careful and make sure 'path' is not empty, you may
>> delete more than you wish (even worse, path may contain '..' or
>> likewise from a list.files(all.names=TRUE) call). Is there another
>> *non-recursive* way to delete a single empty directory on Windows
>> (without turning to system() calls)?
>>
>> Thanks,
>>
>> Henrik
More information about the R-devel
mailing list