Saturday, March 28, 2015

R - Find and Change file names

Let's say that we have a text file of having a original file name in 1st column and the file name changes to 3rd column. If the first column file name matches with the file name in the folder, then change the file name to have a file name in 3rd column. The below mentioned link shows you the format of the file.

Firm Panel File Names

The FIRM Panel file names


These are the raster files available in a original folder





workDir <- "I:/J_Prashant's External HD/Thumb drive/Technical/GIS Toolbox/R/reneedyourhelpmann/Find and Change file Names/"
setwd(workDir)

inData <- read.csv("FIRM_Panel_Printed_Revised.csv", header=FALSE, sep=",", as.is=TRUE)
FIRM_Panel_file_names_WE <- inData[,1]
FIRM_Panel_file_names_PNG <- paste0(FIRM_Panel_file_names_WE, ".png")
FIRM_Panel_file_names_PGW <- paste0(FIRM_Panel_file_names_WE, ".pgw")
FIRM_Panel_file_nos_Renames_WE <- inData[,3]
FIRM_Panel_file_Renames_PNG <- paste0(FIRM_Panel_file_nos_Renames_WE, ".png")
FIRM_Panel_file_Renames_PGW <- paste0(FIRM_Panel_file_nos_Renames_WE, ".pgw")

FIRM_Panel_file_names <- list.files("FIRM Panels/")

FIRM_Panel_present_PNG <- FIRM_Panel_file_names_PNG %in% FIRM_Panel_file_names
FIRM_Panel_present_PGW <- FIRM_Panel_file_names_PGW %in% FIRM_Panel_file_names

for (eachFile in 1:length(FIRM_Panel_present_PNG)) {
  if (FIRM_Panel_present_PNG[eachFile]) {
    file.copy(paste0("FIRM Panels/", FIRM_Panel_file_names_PNG[eachFile]),
              "Output folder/")
  }
}

for (eachFile in 1:length(FIRM_Panel_present_PGW)) {
  if (FIRM_Panel_present_PGW[eachFile]) {
    file.copy(paste0("FIRM Panels/", FIRM_Panel_file_names_PGW[eachFile]),
              "Output folder/")
  }
}

select_files <- list.files("Output folder/")

for (eachFile in select_files) {
  file_prefix <- unlist(strsplit(eachFile, "\\."))[1]
  file_suffix <- unlist(strsplit(eachFile, "\\."))[2]
  file_index <- which(file_prefix == inData[, 1])
  outfile_name <- paste0(inData[file_index, 3], ".", file_suffix)
  file.rename(paste0("Output folder/", eachFile),
              paste0("Output folder2/", outfile_name))

}

The original file name changes to new file name in the output folder which are as follows


No comments:

Post a Comment