【问题标题】:How to exclude some files in the folder如何排除文件夹中的某些文件
【发布时间】:2017-08-06 02:03:08
【问题描述】:

我在目录中有一些文件,它们的扩展名都相同。我想列出所有文件,但稍后想忽略一些包含某些字符串的文件名。我用这个答案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

【问题讨论】:

    标签: r


    【解决方案1】:

    这将起作用:

    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 结果变为FALSE,反之亦然)。
    • 为了捕获所有的 B,无论它们位于何处,我都会搜索出现 0 次或多次(由 * 符号表示)的任何字符(. 表示的内容)。这样无论 B 是在文件名的开头还是结尾,它都会被同等捕获。
    • 由于 . 在正则表达式中具有“任何字符”的特殊含义,因此要在表达式中包含文字点,您必须对其进行转义,因此 \\. 在 txt 扩展之前。

    【讨论】:

    • 感谢您的回答。你能解释一下'\\` and * 是什么意思吗?我只使用*,但真的不知道他们代表什么?此外,如果我想为排除添加另一个文件名,我该如何实现它们。您能否也将这些要点添加到您的解决方案中!谢谢。
    • 我用我的更改更新了帖子。如果您还有其他问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    相关资源
    最近更新 更多