2015-10-08 73 views
4

我想列出与目录中文件相关的文本文件中的所有信息。我用下面的语句来做到这一点:在文件夹中列出目录中所有文件的文件信息

file.info(list.files(path="C:\\temp\\dat\\work",pattern="\\.T$)) 

我是 - 输出

  size isdir mode mtime ctime atime exe 
17517.T NA NA <NA> <NA> <NA> <NA> <NA> 
17530.T NA NA <NA> <NA> <NA> <NA> <NA> 
17565.T NA NA <NA> <NA> <NA> <NA> <NA> 

所有我想要的是让在格式的文本文件中的所有信息如下─

Date modified Time modified   size file name 
10/08/2015  02:39 AM   122055 17517.T 
10/08/2015  02:39 AM   122662 17530.T 
10/01/2015  08:37 PM    76613 17565.T 
+0

什么'file.info(“C:\\ \\温度DAT \\工作“)'给? – Seth

+0

size isdir mode mtime C:\\ temp \\ dat \\ work 0 TRUE 777 2015-10-08 10:48:56 ctime atime exe C:\\ temp \\ dat \\ 2015-02- 07 15:15:47 2015-10-08 10:48:56没有 – asmi

+0

@seth请看上面 – asmi

回答

10

你需要告诉list.files返回完整路径。没有它,我可以复制你的行为:

> file.info(list.files(path="/home/rowlings/bin",pattern=".sh$")) 
        size isdir mode mtime ctime atime uid gid uname grname 
backupStatus.sh  NA NA <NA> <NA> <NA> <NA> NA NA <NA> <NA> 
checkFetchmail.sh NA NA <NA> <NA> <NA> <NA> NA NA <NA> <NA> 
postgresBackup.sh NA NA <NA> <NA> <NA> <NA> NA NA <NA> <NA> 
postgresBackup2.sh NA NA <NA> <NA> <NA> <NA> NA NA <NA> <NA> 
roxbuild.sh   NA NA <NA> <NA> <NA> <NA> NA NA <NA> <NA> 

什么情况是,list.files只返回文件名,所以后来file.info期待在工作目录中,没有找到该文件,并返回NA无处不在。

随着​​然后list.files返回的完整路径,所以file.info可以找到的文件和好的报到:

> file.info(list.files(path="/home/rowlings/bin",pattern=".sh$", full.names=TRUE)) 
             size isdir mode    mtime 
/home/rowlings/bin/backupStatus.sh 1333 FALSE 755 2013-06-03 14:24:47 
/home/rowlings/bin/checkFetchmail.sh 427 FALSE 755 2009-01-17 22:18:40 
/home/rowlings/bin/postgresBackup.sh 98 FALSE 755 2008-09-11 16:27:55 
/home/rowlings/bin/postgresBackup2.sh 206 FALSE 755 2009-09-09 16:27:10 
/home/rowlings/bin/roxbuild.sh   850 FALSE 755 2011-03-08 10:11:06 
+0

@ Spacedman-非常感谢!有效。我还有一个问题。我有一个文件列表以及路径名。我想提取每个文件的文件名。如何才能做到这一点?我尝试使用basename(),但它没有解决。 – asmi

+0

@asmi你应该点击这个答案旁边的“剔号”,接受它作为最佳答案,并问你的其他问题是一个全新的问题 - 答案可能已经在那里。 – Spacedman

0

退房这里的小插曲例如 https://stat.ethz.ch/R-manual/R-patched/library/base/html/file.info.html

ncol(finf <- file.info(dir())) 
finf 

编辑

尝试改变等其他文件夹的目录路径,看看您是否能重现上的其他文件的预期结果(可能是一个.R)。它适用于没有NA的我。你正在处理什么类型的文件?检查文件的属性。

我复制了你的答案。当你在一个目录下工作时,可以说当前工作目录是getwd() c:\ temp,并尝试调用其他目录中c:\ temp \ folders \ data中的一个文件夹,以获得NA值。如果列出full.names = T,则解决此问题。正如Spacedman所指出的那样。

file.info(list.files(path ="C:\\temp\\dat\\work", pattern =".T$", full.names = T)) 
+0

@ user5249203我试过了。它给了我在我的问题中提到的相同结果 – asmi

+0

检查编辑并查看是否可以解决问题。 – user5249203

+0

我试着为另一个文件夹做这件事。它列出了所有的文件,但其他一切都被列为NA recorder_type.xls NA NA 资源数据types.xls NA NA asmi

1

试试这个例子:

library(tidyr) 
library(dplyr) 

#get file list - your list of files would be different 
fileList <- list.files()[1:5] 

#result 
cbind(
    file.info(fileList)[,c("size"), drop=FALSE], 
    x = as.character(file.mtime(fileList))) %>% 
    separate(x, 
      into = c("DateModified","TimeModified"), 
      sep=" ") %>% 
    add_rownames %>% 
    select(DateModified, 
     TimeModified, 
     Size=size, 
     FileName=rowname) 

#output will be something similar to below 
# Source: local data frame [5 x 4] 
# 
# DateModified TimeModified Size  FileName 
#   (chr)  (chr) (dbl)  (chr) 
# 1 2015-09-07  11:59:31 748  data.txt 
# 2 2015-07-20  13:02:31 199 ddata.csv 
# 3 2015-08-17  09:59:13 402 desktop.ini 
# 4 2015-06-25  11:20:02 18432 Drawing2.vsd 
相关问题