file_ext: Manipulate filename extensions

View source: R/paths.R

file_extR Documentation

Manipulate filename extensions

Description

Functions to obtain (file_ext()), remove (sans_ext()), and change (with_ext()) extensions in filenames.

Usage

file_ext(x, extra = "")

sans_ext(x, extra = "")

with_ext(x, ext, extra = "")

Arguments

x

A character of file paths.

extra

Extra characters to be allowed in the extensions. By default, only alphanumeric characters are allowed (and also some special cases in ‘Details’). If other characters should be allowed, they can be specified in a character string, e.g., "-+!_#".

ext

A vector of new extensions. It must be either of length 1, or the same length as x.

Details

file_ext() is similar to tools::file_ext(), and sans_ext() is similar to tools::file_path_sans_ext(). The main differences are that they treat tar.(gz|bz2|xz) and nb.html as extensions (but functions in the tools package doesn't allow double extensions by default), and allow characters ~ and ⁠#⁠ to be present at the end of a filename.

Value

A character vector of the same length as x.

Examples

library(xfun)
p = c("abc.doc", "def123.tex", "path/to/foo.Rmd", "backup.ppt~", "pkg.tar.xz")
file_ext(p)
sans_ext(p)
with_ext(p, ".txt")
with_ext(p, c(".ppt", ".sty", ".Rnw", "doc", "zip"))
with_ext(p, "html")

# allow for more characters in extensions
p = c("a.c++", "b.c--", "c.e##")
file_ext(p)  # -/+/# not recognized by default
file_ext(p, extra = "-+#")

yihui/xfun documentation built on April 14, 2024, 6:23 a.m.