如何排除文件夹

时间:2017-08-05 17:27:50

标签: r

我在目录中有一些文件,它们的扩展名都是一样的。我想列出所有文件,但稍后会想忽略一些包含某些字符串的文件名。我使用此答案using-r-to-list-all-files-with-a-specified-extension尝试了grepl

例如,在这个例子中,我想排除其中包含“B”的文件。试过了,

file_names <- c('AA','BA','KK','CB')
files <- paste0(file_names,'.txt')

Filter_files <- files[-grepl('.*B.txt|.B*.txt', files)]

Filter_files

 "BA.txt" "KK.txt" "CB.txt"

有趣的是只排除了AA.txt

1 个答案:

答案 0 :(得分:2)

这将有效:

file_names <- c('AA','BA','KK','CB')
files <- paste0(file_names,'.txt')

Filter_files <- files[!grepl('.*B.*\\.txt', files)]

Filter_files

## "AA.txt" "KK.txt"

以下是我所做的更改:

  • 而不是-,而grepl前面有!,这会否定grepl的结果(即TRUE结果变为{{ 1}}和反之亦然。
  • 要捕获所有B,无论它们位于何处,我都会搜索出现0次或更多次的任何字符(即FALSE指示的字符)(由.符号表示)。这样,无论B是在文件名的开头还是结尾,它都被同样捕获。
  • 由于*在正则表达式中具有“任意字符”的特殊含义,因此要在表达式中使用文字点,必须将其转义,因此在{txt扩展名之前.