从完整文件路径查找文件名

问题描述 投票:0回答:5

有没有一种方法可以从文件完整路径(文件路径的一部分)中提取文件名,而无需操作字符串的麻烦?

Java 中的等价物是:

File f = new File ("C:/some_dir/a")
f.getName() //output a
f.getFullAbsolutePath() //output c:/some_dir/a
file r path
5个回答
382
投票

使用

basename("C:/some_dir/a.ext")
# [1] "a.ext"
dirname("C:/some_dir/a.ext")
# [1] "C:/some_dir"

25
投票

tidyverse 等效项位于 fs 包中。 {fs} 在底层使用了 libuv

library("fs")

path_file("/some/path/to/file.xyz")
#> [1] "file.xyz"

path_dir("/some/path/to/file.xyz")
#> [1] "/some/path/to"

reprex 包于 2020-02-19 创建(v0.3.0)


3
投票

@Honeybear。 从您可以使用的文件名中删除扩展名的函数是 {tools} R 包中的函数

tools::file_path_sans_ext("ABCD.csv")
## [1] "ABCD"

参见SO中的这篇文章


1
投票

在尝试找到从 R 中的路径提取文件名的最快方法时,我发现使用 sub

 与正则表达式 
".*/"
basename
 快一个数量级(如果速度是一个问题) .

files<-paste0("http://some/ppath/to/som/cool/file/",1:1000,".flac") sub(".*/", "", files,perl = T)
    

0
投票
如果

list.files

full.names = FALSE
函数(可以方便地查找与目录中的模式匹配的文件)将删除目录路径。例如,以下将返回不带路径的名称:

list.files(path="directory/to/search", pattern="*.shp", full.names=FALSE)
    
© www.soinside.com 2019 - 2024. All rights reserved.