有没有办法自动删除少数R命令行的所有文件或文件夹?
我知道unlink()
或file.remove()
函数,但对于那些您需要定义一个字符向量,其中包含您要删除的文件的所有名称。我正在查找列出特定路径中所有文件或文件夹的内容(例如“C:/ Temp”),然后删除具有特定名称的所有文件(无论其扩展名如何)。
非常感谢任何帮助!
答案 0 :(得分:54)
也许您只是在寻找file.remove
和list.files
的组合?也许是这样的:
do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE)))
我猜您可以使用grep
或grepl
将文件列表过滤到名称与特定模式匹配的文件列表,不是吗?
答案 1 :(得分:33)
对于已知路径中的所有文件,您可以:
unlink("path/*")
答案 2 :(得分:22)
dir_to_clean <- tempdir() #or wherever
#create some junk to test it with
file.create(file.path(
dir_to_clean,
paste("test", 1:5, "txt", sep = ".")
))
#Now remove them (no need for messing about with do.call)
file.remove(dir(
dir_to_clean,
pattern = "^test\\.[0-9]\\.txt$",
full.names = TRUE
))
您还可以使用unlink
替代file.remove
。
答案 3 :(得分:4)
使用dir和grep的组合这不是太糟糕。这可能会变成一个函数,它还会告诉您哪些文件将被删除,并且如果它不符合您的预期,您将有机会中止。
# Which directory?
mydir <- "C:/Test"
# What phrase do you want contained in
# the files to be deleted?
deletephrase <- "deleteme"
# Look at directory
dir(mydir)
# Figure out which files should be deleted
id <- grep(deletephrase, dir(mydir))
# Get the full path of the files to be deleted
todelete <- dir(mydir, full.names = TRUE)[id]
# BALEETED
unlink(todelete)
答案 4 :(得分:0)
我非常喜欢here::here
来查找文件夹(特别是如果我要在内联评估和Rmarkdown笔记本的编织版本之间切换)...另一个解决方案:
# Batch remove files
# Match files in chosen directory with specified regex
files <- dir(here::here("your_folder"), "your_pattern")
# Remove matched files
unlink(paste0(here::here("your_folder"), files))
答案 5 :(得分:0)
删除文件夹内的所有内容,但保持文件夹为空
unlink("path/*", recursive = T, force = T)
删除文件夹内的所有内容,同时删除文件夹
unlink("path", recursive = T, force = T)
使用 force = T
,覆盖任何只读/隐藏/等。问题。