Automatically Delete Files/Folders

RFilePathDirectoryDelete File

R Problem Overview


Is there any way to automatically delete all files or folders with few R command lines? I am aware of the unlink() or file.remove() functions, but for those you need to define a character vector with exactly all the names of the files you want to delete. I am looking more for something that lists all the files or folders within a specific path (e.g. 'C:/Temp') and then delete all files with a certain name (regardless of its extension).

Any help is very much appreciated!

R Solutions


Solution 1 - R

Maybe you're just looking for a combination of file.remove and list.files? Maybe something like:

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

And I guess you can filter the list of files down to those whose names match a certain pattern using grep or grepl, no?

Solution 2 - R

For all files in a known path you can:

unlink("path/*")

Solution 3 - R

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
))

You can also use unlink as an alternative to file.remove.

Solution 4 - R

Using a combination of dir and grep this isn't too bad. This could probably be turned into a function that also tells you which files are to be deleted and gives you a chance to abort if it's not what you expected.

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

Solution 5 - R

To delete everything inside the folder, but keep the folder empty

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

To delete everything inside the folder, and also delete the folder

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

Use force = T, to overwrite any read-only/hidden/etc. issues.

Solution 6 - R

I quite like here::here for finding my way through folders (especially if I'm switching between inline evaluation and knit versions of an Rmarkdown notebook)... yet another solution:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFrancescoView Question on Stackoverflow
Solution 1 - RjoranView Answer on Stackoverflow
Solution 2 - RHahnemannView Answer on Stackoverflow
Solution 3 - RRichie CottonView Answer on Stackoverflow
Solution 4 - RDasonView Answer on Stackoverflow
Solution 5 - RqedView Answer on Stackoverflow
Solution 6 - RseapenView Answer on Stackoverflow