Here are some useful things which filesstrings
makes
easier than base
or fs
.
First let’s load the library:
library(filesstrings)
#> Loading required package: stringr
“A space in your file name is a hole in your soul.” - Jenny Bryan
remove_filename_spaces(replacement = "_")
replaces them
all with underscores for all files in a directory. By default, they are
replaced with nothing.
file.create(c("file 1.txt", "file 2.txt"))
#> [1] TRUE TRUE
remove_filename_spaces(pattern = "txt$", replacement = "_")
#> 2 files required renaming and this was done successfully.
list.files(pattern = "txt$")
#> [1] "file_1.txt" "file_2.txt"
file.remove(list.files(pattern = "txt$")) # clean up
#> [1] TRUE TRUE
The microscope I use numbers files with 3 numbers by default,
i.e. file001.tif
, file002.tif
and so on. This
is a problem when the automatic numbering passes 1000, whereby we have
file999.tif
, file1000.tif
. What’s the problem
with this? Well, sometimes you need alphabetical order to reflect the
true order of your files. These file numbers don’t satisfy this
requirement:
<- c("file999.tif", "file1000.tif")
file.names sort(file.names)
#> [1] "file1000.tif" "file999.tif"
so file1000.tif
comes before file999.tif
in
alphabetical order. The function nice_nums()
returns the
names that we’d like them to have:
nice_nums(file.names)
#> [1] "file0999.tif" "file1000.tif"
The function nice_file_nums
applies such renaming to all
the files in an entire directory. It wraps nice_nums
.
before_last_dot("spreadsheet_92.csv")
#> [1] "spreadsheet_92"
Add a file extension if needed:
give_ext("xyz", "csv")
#> [1] "xyz.csv"
If the file name has the correct extension already, it’s left alone:
give_ext("xyz.csv", "csv")
#> [1] "xyz.csv"
Change a file extension:
give_ext("abc.csv", "txt") # tack the new extension onto the end
#> [1] "abc.csv.txt"
give_ext("abc.csv", "txt", replace = TRUE) # replace the current extension
#> [1] "abc.txt"