我想使用Ruby从一个文件夹中获得所有文件名。
当前回答
这是一个在目录中查找文件的解决方案:
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['/etc/path/*'].each do |file_name|
next if File.directory? file_name
end
def get_path_content(dir)
queue = Queue.new
result = []
queue << dir
until queue.empty?
current = queue.pop
Dir.entries(current).each { |file|
full_name = File.join(current, file)
if not (File.directory? full_name)
result << full_name
elsif file != '.' and file != '..'
queue << full_name
end
}
end
result
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.new('/home/user/foldername').each { |file| puts file }
当加载操作目录中的所有文件名时,您可以使用
Dir.glob (*)
这将返回应用程序正在运行的上下文中的所有文件(注意,对于Rails,这是应用程序的顶级目录)
您可以在这里(https://ruby-doc.org/core-2.7.1/Dir.html#method-c-glob)进行额外的匹配和递归搜索
推荐文章
- 在Ruby中不创建新字符串而修饰字符串的规范方法是什么?
- RVM不是一个函数,用' RVM use…’不会起作用
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 了解Gemfile。锁文件
- 如何确定一个数组是否包含另一个数组的所有元素
- 是什么导致这个ActiveRecord::ReadOnlyRecord错误?
- 最好的打印散列的方法
- 如何删除文件中的特定行?
- Rails:dependent =>:destroy VS:dependent =>:delete_all
- 我可以在不包含Ruby模块的情况下调用实例方法吗?
- 如何将新项目添加到哈希
- 测试一个Ruby类是否是另一个类的子类
- 什么时候使用Struct vs. OpenStruct?
- 数组到哈希Ruby
- 使用Java重命名文件