如何使用ruby在目录中获取文件数

Loh*_* MV 31 ruby directory file-io

使用ruby如何获取给定目录中的文件数,文件计数应包括来自递归目录的计数.

例如:folder1(2个文件)-----> folder2(4个文件),folder2在folder1中.上述案例的总数应为6个档案.

在ruby中是否有任何函数可以获取此数据.

Mar*_*her 36

最快的方法应该是(不包括计数中的目录):

Dir.glob(File.join(your_directory_as_variable_or_string, '**', '*')).select { |file| File.file?(file) }.count
Run Code Online (Sandbox Code Playgroud)

而且更短:

dir = '~/Documents'
Dir[File.join(dir, '**', '*')].count { |file| File.file?(file) }
Run Code Online (Sandbox Code Playgroud)


Ray*_*oal 27

您只需要这个,在当前目录中运行.

Dir["**/*"].length
Run Code Online (Sandbox Code Playgroud)

它将目录计为文件.


小智 7

稍作修改和评论

Dir['**/*'].count { |file| File.file?(file) }
Run Code Online (Sandbox Code Playgroud)

在Ruby 1.9.3中适用于我,并且更短.

至少在我的Windows 7盒子上,一个警告是Dir['somedir/**/*']不起作用.我必须使用

cd(somedir) { Dir['**/*'] }
Run Code Online (Sandbox Code Playgroud)