有什麼方法可以自動刪除R命令行少的所有文件或文件夾? 我知道unlink()
或file.remove()
函數,但是對於那些需要定義一個字符向量的人來說,其中的所有文件名都要刪除。我正在尋找更多的東西,列出特定路徑(例如'C:/ Temp')中的所有文件或文件夾,然後刪除具有某個名稱(不管其擴展名)的所有文件。自動刪除R中的文件/文件夾
任何幫助非常感謝!
有什麼方法可以自動刪除R命令行少的所有文件或文件夾? 我知道unlink()
或file.remove()
函數,但是對於那些需要定義一個字符向量的人來說,其中的所有文件名都要刪除。我正在尋找更多的東西,列出特定路徑(例如'C:/ Temp')中的所有文件或文件夾,然後刪除具有某個名稱(不管其擴展名)的所有文件。自動刪除R中的文件/文件夾
任何幫助非常感謝!
也許你只是在尋找組合file.remove
和list.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)
'dir'採用'pattern'參數,所以你不需要單獨使用'grep'。 – 2012-02-15 17:09:31
@RichieCotton好點。我會注意到這一點,因爲我沒有經常使用dir,grep對我來說似乎是一個自然的解決方案。 – Dason 2012-02-15 19:23:30
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
。
對於已知路徑可以將所有文件:
unlink("path/*")
爲什麼這不是最高投票解決方案?這很奇妙。 – Zediiiii 2016-03-24 18:55:42
有一點需要注意:這種方法可以刪除所有內容;文件無法在回收站內恢復。 – 2017-06-30 02:37:04
要刪除特定擴展名的文件,這也link可以遵循,
junk <- dir(path="your_path", pattern="your_pattern")
file.remove(junk)
,並可能使用'pattern'參數到'list.files'(或者'dir'是一個同義詞)。我認爲它們默認會產生一個向量,所以需要在它們周圍包裝一個「list」調用來處理'do.call'。 – James 2012-02-15 15:56:12
夥計們,當我嘗試do.call像你說的我得到這個錯誤信息:[1]假否假假假假假 警告消息: 1:在函數(...): 不能刪除文件' Sim2003.dbf',原因'沒有這樣的文件或目錄' – Francesco 2012-02-15 16:29:42
這使得它似乎沒有文件(沒有文件)在我指定的目錄中...這是有點奇怪,因爲文件是有的...和如果我只是使用list.files('C:/ Temp')它給了我所有正確的...我做錯了什麼? – Francesco 2012-02-15 16:31:30