使用R列出具有指定扩展名的所有文件

时间:2011-02-02 16:09:42

标签: r

我是R的新手,正在更新R脚本以迭代使用ArcGIS创建的一系列.dbf表并生成一系列图表。

我有一个目录C:\ Scratch,它将包含我的所有.dbf文件。但是,当ArcGIS创建这些表时,它还包含.dbf.xml文件。我想从我的文件列表中删除这些.dbf.xml文件,从而删除我的迭代。我试过搜索和试验正则表达式无济于事。这是我正在使用的基本表达式(不包括所有各种实验):

files <- list.files(pattern = "dbf")

任何人都可以给我一些指导吗?

5 个答案:

答案 0 :(得分:166)

files <- list.files(pattern = "\\.dbf$")
最后

$表示这是字符串的结尾。 "dbf$"也可以使用,但添加\\..是正则表达式中的特殊字符,因此您需要将其转义)确保您只匹配扩展名为.dbf的文件(in例如,您有.adbf个文件。

答案 1 :(得分:55)

尝试使用globs而不是正则表达式,因此它只会选出以.dbf

结尾的文件名
filenames <- Sys.glob("*.dbf")

答案 2 :(得分:12)

使用"\\.dbf"字符固定模式以在字符串末尾找到$

list.files(pattern = "\\.dbf$")

答案 3 :(得分:6)

我不太擅长使用复杂的正则表达式,所以我会通过以下方式完成这项任务:

files <- list.files()
dbf.files <- files[-grep(".xml", files, fixed=T)]

第一行只列出工作目录中的所有文件。第二个删除包含“.xml”的所有内容(grep在'files'向量中返回此类字符串的索引;使用负索引进行子集删除向量中的相应条目)。 grep函数的“固定”参数只是我的心血来潮,因为我通常希望它在没有Perl风格的花式正则表达式的情况下执行原始模式匹配,这可能会给我带来惊喜。

我知道这样的解决方案只是反映了我的教育中的缺点,但对于新手而言,它可能是有用的=)至少它很容易。

答案 4 :(得分:3)

为您提供完整路径的文件列表:

  Sys.glob(file.path(file_dir, "*.dbf")) ## file_dir = file containing directory