我将拥有源路径的列表&excel中的目标路径,
我如何移动这些文件
源 | 目标 | |
---|---|---|
C:\users/desk/1/a.pdf | C:\users/desktop/2 | |
C:/users/desk/1/b.pdf | C:/users/sdesktop/3 | |
C:/users/desk/1/abb.pdf | C:/users/sdesktop/56 |
要复制文件,可以使用file.copy
。这接受单个目录的矢量,或文件路径的矢量作为目标,并将文件复制到新目录/路径。
由于目标列仅包含目录路径,因此需要为新文件指定完整路径(包括文件名(。为此,可以使用file.path
和basename
将原始文件名(在source
中(连接到新目录(destination
(。
df = data.frame(
source = c('C:/users/desk/1/a.pdf', 'C:/users/desk/1/b.pdf', 'C:/users/desk/1/abb.pdf'),
destination = c('C:/users/desktop/2', 'C:/users/desktop/3', 'C:/users/desktop/56')
)
file.copy(from = df$source, to = file.path(df$destination, basename(df$source)))
要移动文件,可以使用file.rename
。
file.rename(from = df$source, to = file.path(df$destination, basename(df$source)))
注意1:file.rename
只能在同一驱动器上的位置之间移动文件时工作。要在驱动器之间移动文件,可以使用file.copy
和file.remove
在复制后删除原始文件。如果这样做,您应该小心不要在复制操作失败时删除文件,例如:
file.move <- function(from, to, ...) {
# copy files and store vector of success
cp <- file.copy(from = from, to = to, ...)
# remove those files that were successful
file.remove(from[cp])
# warn about unsuccessful files
if (any(!cp)) {
warning(
'The following files could not be moved:n',
paste(from[!cp], collapse = 'n')
)
}
}
file.move(from = df$source, to = file.path(df$destination, basename(df$source)))
注意2:这都是假设您已使用read.csv
或data.table::fread
(对于.csv
文件(或readxl::read_excel
(对于.xls
或.xlsx
文件(读取excel数据