R重命名保留原始名称

时间:2018-01-12 17:16:45

标签: r wildcard file-rename

我试图用原始名称的一部分重命名文件夹(约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函数,但我不知道如何识别其全名的代码名称。某种"通配符"可以工作,但不知道如何正确应用这些,因为它们都有相同的模式,但内容不同。

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

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)}

我也试过过&#34; sub&#34;功能如下:

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)中获取错误:   不能强迫类型&#39;关闭&#39;到#&#39;字符&#39;

的矢量

OR

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

哪个运行没有错误但对文件中的名称没有任何作用。

我可以使用任何帮助。 感谢

1 个答案:

答案 0 :(得分:1)

这是我的例子。

准备使用的数据;

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)