仅在当前目录中搜索

时间:2011-04-26 12:49:15

标签: ruby

我正在使用

Find.find("c:\\test") 

搜索目录中的文件。我只是想在这个级别搜索目录,所以c:\ test中的任何目录都不会被搜索。

我可以使用其他方法吗?

由于

3 个答案:

答案 0 :(得分:4)

# Temporarily make c:\test your current directory
Dir.chdir('c:/test') do
  # Get a list of file names just in this directory as an array of strings
  Dir['*'].each do |filename|
    # ...
  end
end

可替换地:

# Get a list of paths like "c:/test/foo.txt"
Dir['c:/test/*'] do |absolute|
  # Get just the filename, e.g. "foo.txt"
  filename = File.basename(absolute)
  # ...
end

如果您愿意,可以将文件名只包含在数组中:

files = Dir.chdir('c:/text'){ Dir['*'] }
files = Dir['c:/text/*'].map{ |f| File.basename(f) }

答案 1 :(得分:3)

Find的{​​{1}}方法允许您跳过当前文件或目录:

  

跳过当前文件或目录,   用下一个重启循环   条目。如果当前文件是   目录,该目录不会   递归输入。只有意义   在与之关联的块内   查找::找到。

prune

答案 2 :(得分:0)

例如,您可以使用Dir.foreach()列出c:\ test

下的所有文件
Dir.foreach("c:\\test")  {|x| puts "#{x}" }