我想使用Ruby从一个文件夹中获得所有文件名。
当前回答
Dir.entries(folder)
例子:
Dir.entries(".")
来源:http://ruby-doc.org/core/classes/Dir.html method-c-entries
其他回答
就我个人而言,我发现这对于在文件夹中循环文件最有用,前瞻性安全:
Dir['/etc/path/*'].each do |file_name|
next if File.directory? file_name
end
这是一个在目录中查找文件的解决方案:
files = Dir["/work/myfolder/**/*.txt"]
files.each do |file_name|
if !File.directory? file_name
puts file_name
File.open(file_name) do |file|
file.each_line do |line|
if line =~ /banco1/
puts "Found: #{line}"
end
end
end
end
end
要递归地获取所有文件(严格来说只针对文件):
Dir.glob('path/**/*').select { |e| File.file? e }
或者任何不是目录的东西(File.file?将拒绝非常规文件):
Dir.glob('path/**/*').reject { |e| File.directory? e }
可选择的解决方案
在Dir等基于模式的查找方法上使用Find# Find。Glob实际上更好。请参阅“用Ruby递归列出目录的一行程序?”
如果你用空格创建目录:
mkdir "a b"
touch "a b/c"
你不需要转义目录名,它会自动完成:
p Dir["a b/*"] # => ["a b/c"]
当加载操作目录中的所有文件名时,您可以使用
Dir.glob (*)
这将返回应用程序正在运行的上下文中的所有文件(注意,对于Rails,这是应用程序的顶级目录)
您可以在这里(https://ruby-doc.org/core-2.7.1/Dir.html#method-c-glob)进行额外的匹配和递归搜索
推荐文章
- 如何从查找“类型d”中排除此/ current / dot文件夹
- Rails中的OO设计:在哪里放置东西
- 从包含文件名的路径获取不包含文件名的完整路径
- 给定一个类,查看实例是否有方法(Ruby)
- 如何拉特定的目录与git
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- 在日历应用程序中建模重复事件的最佳方法是什么?
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 如何创建一个私有类方法?
- 从java.io.File获取java.nio.file.Path对象
- 无法安装pg gem
- 双* (splat)操作符做什么
- 如何使用Ruby on Rails进行HTTP请求?
- 用c#编写数据到CSV文件