xfun (version 0.43)

file_ext: 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 = "")

Value

A character vector of the same length as x.

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.

Examples

Run this code
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 = "-+#")

Run the code above in your browser using DataLab