0xC*_*ACE 87 ruby directory directory-listing
如何使用ruby获取某个目录中存在的文件夹列表?
Dir.entries() 看起来很近但我不知道如何限制文件夹.
Emi*_*ggi 103
我发现这更有用,更易于使用:
Dir.chdir('/destination_directory')
Dir.glob('*').select {|f| File.directory? f}
Run Code Online (Sandbox Code Playgroud)
它获取当前目录中的所有文件夹,排除.和...
递归文件夹只需用来**代替*.
该Dir.glob行也可以Dir.chdir作为块传递给:
Dir.chdir('/destination directory') do
Dir.glob('*').select { |f| File.directory? f }
end
Run Code Online (Sandbox Code Playgroud)
sco*_*ttd 69
乔丹很接近,但Dir.entries没有回到File.directory?预期的完整路径.试试这个:
Dir.entries('/your_dir').select {|entry| File.directory? File.join('/your_dir',entry) and !(entry =='.' || entry == '..') }
Run Code Online (Sandbox Code Playgroud)
joh*_*nes 45
在我看来Pathname,比普通字符串更适合文件名.
require "pathname"
Pathname.new(directory_name).children.select { |c| c.directory? }
Run Code Online (Sandbox Code Playgroud)
这将为您提供该目录中所有目录的数组作为Pathname对象.
如果你想要字符串
Pathname.new(directory_name).children.select { |c| c.directory? }.collect { |p| p.to_s }
Run Code Online (Sandbox Code Playgroud)
如果directory_name是绝对的,这些字符串也是绝对的.
Boh*_*ohr 20
递归查找某个目录下的所有文件夹:
Dir.glob 'certain_directory/**/*/'
Run Code Online (Sandbox Code Playgroud)
非递归版本:
Dir.glob 'certain_directory/*/'
Run Code Online (Sandbox Code Playgroud)
注意:Dir.[]像Dir.glob.
有了这个,您可以以递归方式获取目录、子目录、子子目录的完整路径数组。我使用该代码将这些文件加载到文件中。config/application
Dir.glob("path/to/your/dir/**/*").select { |entry| File.directory? entry }
Run Code Online (Sandbox Code Playgroud)
此外,我们不再需要处理无聊的事情.了..。接受的答案需要处理它们。
| 归档时间: |
|
| 查看次数: |
57198 次 |
| 最近记录: |