自动删除文件/文件夹

Fra*_*sco 54 directory r file path delete-file

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

很感谢任何形式的帮助!

jor*_*ran 63

也许你只是想找到file.removelist.files?的组合?也许是这样的:

do.call(file.remove, list(list.files("C:/Temp", full.names = TRUE)))
Run Code Online (Sandbox Code Playgroud)

我猜你可以使用grep或过滤文件列表到名称与某个模式相匹配的文件grepl,不是吗?

  • 好的,我解决了...你需要在list.files()函数中添加full.names = TRUE ...否则它不会发现它们只是相对路径... (7认同)
  • 并且可能使用`list`参数到`list.files`(或`dir`这是一个同义词).我认为它们默认生成一个向量,所以需要在它们周围包含一个`list`调用来处理`do.call`. (3认同)

Hah*_*ann 44

对于已知路径中的所有文件,您可以:

unlink("path/*")
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不是最高投票解决方案?这非常有效. (10认同)
  • 有一点需要注意:这种方法可以删除所有内容; 文件无法在回收站中恢复. (5认同)
  • 最佳解决方案,但有时不起作用。`recursive=TRUE` 和 `force=TRUE` 有帮助。我在 linux 上。 (2认同)

Ric*_*ton 25

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
))
Run Code Online (Sandbox Code Playgroud)

您也可以使用它unlink作为替代file.remove.


ish*_*est 6

删除文件夹内的所有内容,但保持文件夹为空

unlink("path/*", recursive = TRUE, force = TRUE)
Run Code Online (Sandbox Code Playgroud)

删除文件夹内的所有内容,同时删除该文件夹

unlink("path", recursive = TRUE, force = TRUE)
Run Code Online (Sandbox Code Playgroud)

使用force = TRUE, 覆盖任何只读/隐藏/等。问题。