Автоматически удалять файлы / папки - PullRequest
50 голосов
/ 15 февраля 2012

Есть ли способ автоматически удалить все файлы или папки с несколькими командными строками R? Мне известны функции unlink() или file.remove(), но для них вам нужно определить символьный вектор с точно всеми именами файлов, которые вы хотите удалить. Я больше ищу что-то, что перечисляет все файлы или папки в определенном пути (например, «C: / Temp»), а затем удаляет все файлы с определенным именем (независимо от его расширения).

Любая помощь очень ценится!

Ответы [ 4 ]

56 голосов
/ 15 февраля 2012

Может быть, вы просто ищете комбинацию file.remove и list.files? Может быть что-то вроде:

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

И я думаю, вы можете отфильтровать список файлов по тем, чьи имена соответствуют определенному шаблону, используя grep или grepl, нет?

39 голосов
/ 07 октября 2015

Для всех файлов по известному пути вы можете:

unlink("path/*")
22 голосов
/ 15 февраля 2012
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.

4 голосов
/ 15 февраля 2012

Используя комбинацию 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)
...