web-dev-qa-db-fra.com

Supprimer automatiquement les fichiers / dossiers

Existe-t-il un moyen de supprimer automatiquement tous les fichiers ou dossiers avec quelques lignes de commande R? Je connais les fonctions unlink() ou file.remove(), mais pour celles-ci, vous devez définir un vecteur de caractères avec exactement tous les noms des fichiers que vous souhaitez supprimer. Je cherche plus quelque chose qui répertorie tous les fichiers ou dossiers dans un chemin spécifique (par exemple `` C:/Temp ''), puis supprime tous les fichiers avec un certain nom (quelle que soit son extension).

Toute aide est fortement appréciée!

50
Francesco

Peut-être cherchez-vous simplement une combinaison de file.remove et list.files? Peut-être quelque chose comme:

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

Et je suppose que vous pouvez filtrer la liste des fichiers jusqu'à ceux dont les noms correspondent à un certain modèle en utilisant grep ou grepl, non?

58
joran

Pour tous les fichiers d'un chemin connu, vous pouvez:

unlink("path/*")
41
Hahnemann
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
))

Vous pouvez également utiliser unlink comme alternative à file.remove.

23
Richie Cotton

En utilisant une combinaison de dir et grep, ce n'est pas trop mal. Cela pourrait probablement être transformé en une fonction qui vous indique également quels fichiers doivent être supprimés et vous donne une chance d'interrompre si ce n'est pas ce que vous attendiez.

# 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
Dason