batch.rename.file <- function(pattern, replacement, path=".")
{
## Purpose: Rename all files in a directory according to a pattern (regular expression).
## Arguments:
## pattern: a regular expression (as is used by R base function "sub") to match the file names.
## replacement: replacement text for the new file name (as is used by R base function "gsub")
## path: path to a directory containing the files to be renamed. Default to the current directory.
## Return: Side Effect (all files in the directory will be renamed)
## Author: Feiming Chen, Date: 21 Apr 2017, 13:32
## ________________________________________________
f1 <- dir(path, pattern, full.names = T, recursive = T) # Current file names. Include all files in subdirectories.
f1.base <- basename(f1)
f2.base <- sub(pattern, replacement, f1.base) # Corresponding New file names
f2 <- file.path(dirname(f1), f2.base)
ans <- file.rename(f1, f2)
idx <- which(!ans) # which operation (file renaming) fails
if (length(idx) == 0) {
cat("All", length(ans), "files are renamed.\n")
} else {
cat(length(idx), "out of", length(ans), "files are not renamed.\n")
}
}
if (F) { # Unit Test
dir.create("tmp")
setwd("tmp")
file.create("a.b.html", "c.d.html")
batch.rename.file("\\.", "_")
dir() # "a_b.html" "c_d.html"
}
Friday, April 21, 2017
Rename all files in a directory according to a pattern (regular expression)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment