考慮到匹配包含字母或數字的任何文件,其中包含點擴展(留出子目錄,但不幸的是文件,而無需擴展)這個正則表達式:
# WITH ANCHORING
files <- list.files(path, pattern=("[a-zA-Z0-9]*[.][a-zA-Z0-9]*$"))
# MATCHING LETTER AND/OR NUMBER FILES WITH EXTENSION
files = list.files(myDir, pattern=("[a-zA-Z0-9]*[.]"))
# WILDCARD FILE MATCHING WITH EXTENSION
files = list.files(myDir, pattern=("*[.]"))
其他一些正則表達式的變化捕捉文件與週期(注意,這些還可以獲得目錄與時間和錯過的文件沒有擴展名)
list.files(pattern="\\..+$")
list.files(pattern="\\.[[:alnum:]]+$")
而且使用system2
與ls
似乎工作得很好(感謝@ 42-以及FR OM評論),
system2("ls", args=c("-al", "|", "grep", "^-"))
應該得到唯一的規則文件(包括那些沒有擴展名),或
system2("ls", args=c("--classify"))
應具有目錄返回文件「/」後綴,使他們能夠確定。
另一種可選擇的開源解決方案,考慮Python解決方案,讓您條件,如果項目是一個目錄,並使用os.path.join()
是不可知的任何操作系統平臺。
import os
files = [f for f in os.listdir(myDir) if os.path.isfile(os.path.join(myDir, f))]
我不認爲你會發現什麼比'˚F<快得多 - 函數(){setdiff(list.files(),list.dirs(full.names = FALSE,遞歸= FALSE)) }; F()'。 –
做的所有文件都有擴展名嗎? 'list.files('〜/ desktop',full.names = TRUE,pattern ='\\。\\ w + $')' – rawr
'系統(「ls」)調用? –