自动删除文件/文件夹

时间:2012-02-15 15:40:59

标签: r file path directory delete-file

有没有办法自动删除少数R命令行的所有文件或文件夹? 我知道unlink()file.remove()函数,但对于那些您需要定义一个字符向量,其中包含您要删除的文件的所有名称。我正在查找列出特定路径中所有文件或文件夹的内容(例如“C:/ Temp”),然后删除具有特定名称的所有文件(无论其扩展名如何)。

非常感谢任何帮助!

6 个答案:

答案 0 :(得分:54)

也许您只是在寻找file.removelist.files的组合?也许是这样的:

do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE)))

我猜您可以使用grepgrepl将文件列表过滤到名称与特定模式匹配的文件列表,不是吗?

答案 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,覆盖任何只读/隐藏/等。问题。