Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 自动删除文件/文件夹_R_File_Path_Directory_Delete File - Fatal编程技术网

R 自动删除文件/文件夹

R 自动删除文件/文件夹,r,file,path,directory,delete-file,R,File,Path,Directory,Delete File,有没有办法用很少的R命令行自动删除所有文件或文件夹? 我知道unlink()或file.remove()函数,但对于那些函数,您需要定义一个字符向量,其中包含要删除的文件的所有名称。我正在寻找更多的东西,列出特定路径(例如“C:/Temp”)内的所有文件或文件夹,然后删除具有特定名称的所有文件(无论其扩展名如何) 非常感谢您的帮助 也许您只是在寻找文件.remove和列表.files的组合?可能是这样的: do.call(file.remove, list(list.files("C:/Temp

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


非常感谢您的帮助

也许您只是在寻找
文件.remove
列表.files
的组合?可能是这样的:

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

我猜您可以使用
grep
grepl
将文件列表过滤到那些名称与特定模式匹配的文件,否?

使用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)
#哪个目录?

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

unlink("path/*")

我非常喜欢
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))
#批量删除文件
#将所选目录中的文件与指定的正则表达式匹配

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

unlink("path/*", recursive = T, force = T)

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

unlink("path", recursive = T, force = T)

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

并可能使用
模式
参数来
列表文件
(或同义词
目录
)。我认为它们默认会生成一个向量,因此需要在它们周围包装一个
列表
调用,以使用
do.call
。伙计们,当我像你说的那样尝试do.call时,我收到以下错误消息:[1]错误警告消息:1:在函数中(…):无法删除文件“Sim2003.dbf”,原因“没有这样的文件或目录”,这使得我指定的目录中似乎没有文件(没有文件),这有点奇怪,因为文件在那里…如果我只使用list.files('C:/Temp'),它会给出所有正确的文件…我做错了什么?好的,我解决了它…你需要在list.files()中添加full.names=TRUE函数…否则它不会仅通过相对路径找到它们…您不需要
do.call
;查看我的答案。
dir
接受一个
pattern
参数,因此不需要单独使用
grep
@RichieCotton。我会注意到这一点,因为我并不经常使用dir,grep对我来说似乎是一个自然的解决方案。如果我想删除位置标记在位置标记向量中没有显示的文件,该怎么办?例如,文件是:a.txt、b.txt、c.txt和my vector v@Nanami:Read和
?regex
。如果您仍然被卡住,请用标签
regex
提问。谢谢。我在我的代码中使用了这一点,尽管我最终删除了正则表达式中的
^
$
,我认为这是使它起作用的变化。不能说我已经彻底测试过了。为什么这不是投票率最高的解决方案?这非常有效。需要注意的是:此方法将永久删除所有内容;无法在回收站中恢复文件。最佳解决方案,但有时不起作用
recursive=TRUE
&
force=TRUE
帮助。我在linux上。这拒绝删除windows 10中的目录,即使使用recursive=TRUE和force=TRUE参数。目录的结构是folder/folder/files,我正在尝试使用unlink()删除顶部文件夹。是否有其他方法将文件移动到回收站/垃圾箱?
unlink("path", recursive = T, force = T)