R重命名文件保留部分原始名称

R rename files keeping part of original name

我正在尝试重命名一个文件夹(大约 7,000 个文件)中的所有文件,仅使用其原始名称的一部分。

初始 fip 代码是标识县的 4 位或 5 位代码,文件夹中的每个文件都不同。原始文件中的其余名称是每个文件的 state_county_lat_lon。

例如:

原名:

"5081_Illinois_Jefferson_-88.9255_38.3024_-88.75_38.25.wth"
"7083_Illinois_Jersey_-90.3424_39.0953_-90.25_39.25.wth"
"11085_Illinois_Jo_Daviess_-90.196_42.3686_-90.25_42.25.wth"
"13087_Illinois_Johnson_-88.8788_37.4559_-88.75_37.25.wth"
"17089_Illinois_Kane_-88.4342_41.9418_-88.25_41.75.wth"

我只需要用初始代码 (fips) 重命名它:

"5081.wth"
“7083.wth”
“11085.wth”
“13087.wth”
“17089.wth”

我试过使用list.files和file.rename函数,但我不知道如何从他的全名中识别代号。某种 "wildcard" 可以工作,但不知道如何正确应用它们,因为它们都有相同的模式但内容不同。

这是我迄今为止尝试过的方法:

setwd("C:/Users/xxx")
Files <- list.files(path = "C:/Users/xxx", pattern = "fips_*.wth" all.files = TRUE)
newName <- paste("fips",".wth", sep = "")

for (x in length(Files)) {
  file.rename(nFiles,newName)}

我还尝试使用 "sub" 函数,如下所示:

setwd("C:/Users/xxxx")
Files <- list.files(path = "C:/Users/xxxx", all.files = TRUE)
for (x in length(Files)) {
  sub("_*", ".wth", Files)}

但在 as.character(x) 中出现错误: 无法将类型 'closure' 强制转换为类型 'character'

的向量

setwd("C:/Users/xxxx")
Files <- list.files(path = "C:/Users/xxxx", all.files = TRUE)
for (x in length(Files)) {
  sub("^(\d+)_.*", "\1.wth", file)}

它运行没有错误,但对文件中的名称没有任何影响。

我需要任何帮助。 谢谢

这是我的例子。

准备使用数据;

dir.create("test_dir")

data_sets <- c("5081_Illinois_Jefferson_-88.9255_38.3024_-88.75_38.25.wth",
  "7083_Illinois_Jersey_-90.3424_39.0953_-90.25_39.25.wth",
  "11085_Illinois_Jo_Daviess_-90.196_42.3686_-90.25_42.25.wth",
  "13087_Illinois_Johnson_-88.8788_37.4559_-88.75_37.25.wth",
  "17089_Illinois_Kane_-88.4342_41.9418_-88.25_41.75.wth")

setwd("test_dir")
file.create(data_sets)

重命名文件;

Files <- list.files(all.files = TRUE, pattern = ".wth")
newName <- sub("^(\d+)_.*", "\1.wth", Files)

file.rename(Files, newName)