在 Ruby 中,Dir 类用于对文件系统中的目录进行操作。它提供了一些方法,使得查找、遍历和操作目录变得容易。以下是一些常用的 Dir 类方法:

查找目录中的文件

列出目录中的所有文件和子目录
Dir.foreach("/path/to/directory") do |entry|
  puts entry
end

获取目录中的所有文件和子目录(数组形式)
entries = Dir.entries("/path/to/directory")
puts entries

过滤目录中的文件

只列出文件,排除子目录
Dir.glob("/path/to/directory/*").each do |file|
  puts file if File.file?(file)
end

只列出子目录,排除文件
Dir.glob("/path/to/directory/*").each do |dir|
  puts dir if File.directory?(dir)
end

创建和删除目录

创建目录
Dir.mkdir("/path/to/new_directory")

删除目录
Dir.delete("/path/to/directory_to_delete")

获取当前工作目录
current_directory = Dir.pwd
puts "Current directory: #{current_directory}"

修改当前工作目录
Dir.chdir("/path/to/new_directory") do
  puts "Now in #{Dir.pwd}"
end

查找匹配的文件
# 列出所有以 ".txt" 结尾的文件
Dir.glob("/path/to/directory/*.txt").each do |file|
  puts file
end

递归遍历目录
def recursive_list_files(dir)
  Dir.foreach(dir) do |entry|
    next if entry == '.' || entry == '..'

    full_path = File.join(dir, entry)
    if File.directory?(full_path)
      recursive_list_files(full_path)
    else
      puts full_path
    end
  end
end

recursive_list_files("/path/to/directory")

这些是一些 Dir 类的基本用法。Dir 类和相关的 File 类使得 Ruby 对文件系统的操作变得相对简单。如有其他问题,请随时提问。


转载请注明出处:http://www.pingtaimeng.com/article/detail/13439/Ruby