[R] how to tell if two file paths refer to the same file
Duncan Murdoch
murdoch.duncan at gmail.com
Tue May 31 22:17:56 CEST 2011
On 11-05-31 3:46 PM, William Dunlap wrote:
> Does R have a standard function that takes two file paths
> (e.g., "./myDirectory/file" and "myDirectory/file")
> and returns TRUE if those paths refer to the same file?
I don't think so. I think normalizePath is as close as we get portably.
On Windows, toupper(shortPathName()) might do a better job, but I'm sure
there are exceptions for it too.
And there are the really crazy exceptions, like mapped drives, UNC
names, etc., where I think it is more or less hopeless to do anything
without modifying the file.
Duncan Murdoch
>
> The paths make take different routes ("absolute" or
> relative paths or via different symbolic or hard links)
> to the same file or may use different naming conventions
> (Windows or DOS 8.3 on Windows). If the file paths do not
> refer to actual files the answer is not generally well-defined
> and I'm sure what the best approach would be.
>
> S+ has a match.path() function that is like match() but
> the equality test is that the strings refer to the same
> file. On Unix it checks that the inode and device numbers
> are the same; on Windows that _fullpath() returns the same
> thing for both paths. E.g.,
> > match.path(c("c:/PROGRA~1",
> "c:\\temp",
> "C:/Program Files/../Program Files"),
> c("C:\\Program Files",
> "C:\\Temp"))
> [1] 1 2 1
>
> I know about R's normalizePath() but it doesn't map all ways
> of refering to a file to the same string so
> normalizePath(f1) == normalizePath(f1)
> is not a reliable test. E.g., with R 2.13.0 on Windows it
> doesn't use a standard capitalization:
> > cat(normalizePath(c("c:/Program Files",
> "C:/program files",
> "c:\\PROGRA~1")), sep="\n")
> c:\Program Files
> C:\program files
> c:\Program Files
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list