用 R 自动整理不同类型的文件
楚新元 / 2021-10-15
这里我们先分别创建 3 个 Excel 和 Word 文档作为示例数据,然后实现两类型的文件分别放在 xlsx 和 docx 文件夹内。
# data 文件夹下创建示例文件
dir.create("data")
x = outer(1:3, c("xlsx", "docx"), FUN = paste, sep = ".")
file.create(paste0("./data/", x))
# 编写整理路径下文件的函数
tidy_file = \(path) {
# 获取文件后缀
path %>%
list.files(recursive = TRUE) %>%
tools::file_ext() %>%
unique() -> files_ext
# 根据后缀建立文件夹
files_ext %>%
paste0(path, "/", .) %>%
fs::dir_create()
# 根据文件类型移动文件
for (i in files_ext) (
path %>%
fs::dir_ls(glob = paste0("*.", i), recurse = TRUE) %>%
fs::file_move(paste0(path, "/", i))
)
}
# 整理给定文件夹
tidy_file("./data")
- 更新 2024-11-15
-
关于文件的移动(从 fullname 的角度看,应该理解为重命名),分组后再移动是没有必要的,计算机在执行过程中实际上还是逐个逐个地执行,因此对上面的
tidy_file
函数的代码更新如下:library(fs) tidy_file = \(path) { # 获取文件列表 files = dir_ls(path, recurse = TRUE, type = "file") # 获取文件后缀 files_ext = tools::file_ext(files) # 根据后缀建立文件夹 path |> paste0("/", unique(files_ext)) |> dir_create() # 批量移动文件 file_move( files, paste(path, files_ext, basename(files), sep = "/") ) }