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)
小智 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)