varios varias superponer studio parte nombre lineas graficos graficas cambiar archivos r file-rename

varias - ¿Cómo cambio el nombre de los archivos usando R?



superponer graficas en r (2)

Tengo más de 700 archivos en una carpeta llamada así: los archivos del número 1 al número 9 se nombran para el primer mes:

water_200101_01.img water_200101_09.img

los archivos del número 10 al número 30 se nombran:

water_200101_10.img water_200101_30.img

Y así sucesivamente para el segundo mes: los archivos del número 1 al número 9 se nombran:

water_200102_01.img water_200102_09.img

los archivos del número 10 al número 30 se nombran:

water_200102_10.img water_200102_30.img

¿Cómo puedo cambiarles el nombre sin hacer ningún cambio en los archivos? simplemente cambie los nams, por ejemplo

water_1 water_2 ...till... water_700


Escribí esto por mí mismo. Es rápido, permite expresiones regulares para buscar y reemplazar, y admite "ejecuciones de prueba".

Si está en un mac, puede usar applescript para seleccionar la carpeta actual en el Finder como una carpeta de destino.

umxRenameFile <- function(baseFolder = "Finder", findStr = NA, replaceStr = NA, listPattern = NA, test = T, overwrite = F) { # uppercase = u$1 if(baseFolder == "Finder"){ baseFolder = system(intern = T, "osascript -e ''tell application /"Finder/" to get the POSIX path of (target of front window as alias)''") message("Using front-most Finder window:", baseFolder) } else if(baseFolder == "") { baseFolder = paste(dirname(file.choose(new = FALSE)), "/", sep = "") ## choose a directory message("Using selected folder:", baseFolder) } if(is.na(listPattern)){ listPattern = findStr } a = list.files(baseFolder, pattern = listPattern) message("found ", length(a), " possible files") changed = 0 for (fn in a) { findB = grepl(pattern = findStr, fn) # returns 1 if found if(findB){ fnew = gsub(findStr, replace = replaceStr, fn) # replace all instances if(test){ message("would change ", fn, " to ", fnew) } else { if((!overwrite) & file.exists(paste(baseFolder, fnew, sep = ""))){ message("renaming ", fn, "to", fnew, "failed as already exists. To overwrite set T") } else { file.rename(paste(baseFolder, fn, sep = ""), paste(baseFolder, fnew, sep = "")) changed = changed + 1; } } }else{ if(test){ # message(paste("bad file",fn)) } } } message("changed ", changed) }


file.rename cambiará el nombre de los archivos, y puede tomar un vector de ambos from y to nombres.

Entonces algo así como:

file.rename(list.files(pattern="water_*.img"), paste0("water_", 1:700))

Podría funcionar.

Si se preocupa específicamente por el pedido, puede ordenar la lista de archivos que existen actualmente, o si siguen un patrón particular, simplemente cree el vector de nombres de archivo directamente (aunque observo que 700 no es un múltiplo de 30).

Dejaré de lado la pregunta, "¿por qué querrías?" ya que parece estar tirando información en el nombre del archivo, pero presumiblemente esa información también está contenida en otros lugares.