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

我对 R 非常陌生,正在更新 R 脚本以迭代一系列。使用 ArcGIS 创建 dbf 表并生成一系列图形。

我有一个目录,C: Scratch,它将包含我所有的。Dbf 文件。但是,当 ArcGIS 创建这些表时,它还包含一个。Xml 文件。我想把这些拿掉。文件列表中的 dbf.xml 文件,因此也就是我的迭代中的 dbf.xml 文件。我尝试过搜索和试验正则表达式,但没有用。这是我使用的基本表达式(排除所有不同的实验) :

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

有人能给我指个方向吗?

181637 次浏览
files <- list.files(pattern = "\\.dbf$")

结尾的 $表示这是字符串的结尾。"dbf$"也可以,但是添加 \\.(.是正则表达式中的特殊字符,所以你需要转义它)确保你只匹配扩展名为 .dbf的文件(如果你有例如 .adbf的文件)。

使用 $字符将模式绑定到字符串末尾的 "\\.dbf":

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

尝试使用 globs 而不是正则表达式,因此它只会选择以 .dbf结尾的文件名

filenames <- Sys.glob("*.dbf")

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

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

第一行只列出了工作目录中的所有文件。第二个放下所有的东西。Xml”(grep 返回这些字符串在‘ files’Vector 中的索引; 带负索引的子设置从 Vector 中删除相应的条目)。 Grep 函数的“固定”参数只是我的一时兴起,因为我通常希望它能够执行粗糙的模式匹配,而不使用 Perl 风格的花哨 regexprs,这可能会让我感到惊讶。

我知道这样的解决方案只是反映了我在教育方面的缺点,但对于一个新手来说,它可能是有用的 =)至少它是容易的。

提供具有完整路径的文件列表:

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