All functions apart from
path_real() are purely path computations, so the
files in question do not need to exist on the filesystem.
path_real(path) path_split(path) path_join(parts) path_abs(path, start = ".") path_norm(path) path_rel(path, start = ".") path_common(path) path_has_parent(path, parent)
A character vector of one or more paths.
A character vector or a list of character vectors, corresponding to split paths.
A starting directory to compute the path relative to.
The parent path.
The new path(s) in an
fs_path object, which is a character vector
that also has class
path_split(), which returns a list
of character vectors of path components.
path_real: returns the canonical path, eliminating any symbolic links and the special references
.., , i.e. it calls
path_split: splits paths into parts.
path_join: joins parts together. The inverse of
path()to concatenate vectorized strings into a path.
path_abs: returns a normalized, absolute version of a path.
.references and rationalizes up-level
../Bis not changed. If one of the paths is a symbolic link, this may change the meaning of the path, so consider using
path_rel: computes the path relative to the
startpath, which can be either an absolute or relative path.
path_common: finds the common parts of two (or more) paths.
path_has_parent: determine if a path has a given parent.
path_expand() for expansion of user's home directory.
.old_wd <- setwd(tempdir()) dir_create("a") file_create("a/b") link_create(path_abs("a"), "c") # Realize the path path_real("c/b") #> /tmp/Rtmp1Q2EDG/a/b # Split a path parts <- path_split("a/b") parts #> [] #>  "a" "b" #> # Join it together path_join(parts) #> a/b # Find the absolute path path_abs("..") #> /tmp # Normalize a path path_norm("a/../b\\c/.") #> b/c # Compute a relative path path_rel("/foo/abc", "/foo/bar/baz") #> ../../abc # Find the common path between multiple paths path_common(c("/foo/bar/baz", "/foo/bar/abc", "/foo/xyz/123")) #> /foo # Cleanup dir_delete("a") link_delete("c") setwd(.old_wd)