我正试图在ruby中编写一个文件搜索实用程序,它需要在txt文件中找到的文件名列表并搜索我的整个计算机中的这些文件。如果找到其中一个文件,那么该文件将被移动到不同的目录(有效地将其从找到的目录中删除)。为什么Dir.glob只评估循环中的最后一个文件
搜索必须通过所有文件夹自上而下。因此,到目前为止,我有以下代码:
File.open("sample-file-list.txt") do |name| # open file with
name.each_line do |file_name|
puts "here is the file I want to look for: #{file_name}"
folder = "/Users/bob/code/find-file"
Dir.glob("#{folder}/**/#{file_name}") do |file|
puts "now I am working on #{file}"
end
end
end
的样本文件LIST.TXT文件有这些项:
0001.txt 0002.txt
里面的文件夹上面我有一个名为“0001.txt”的文件。我在名为subdir的文件夹中也有一个子文件夹,其中包含名为“0002.txt”的文件。
当我运行在终端的ruby文件,我得到的结果是:
here is the file I want to look for: 0001.txt here is the file I want to look for: 0002.txt now I am working on /Users/bob/code/find-file/subdir/0002.txt
我的代码只发现提出的最后一个文件中0002.txt。但由于某种原因,它似乎跳过了0001.txt文件。
作为一个方面说明,我宁愿不使用Dir.glob
,因为它会是很多文件,但Dir.each
不会经过子目录,至少我似乎无法得到它 - 但这是另一个问题。
任何帮助将不胜感激。
缩进对理解很重要,特别是一目了然。尽量组织尽可能有组织的代码,以避免模糊或混淆。 – tadman
如果您遇到性能问题,最好''Dir.glob(“**/*”)'一次获取所有内容,然后使用'grep'查找该列表中的文件。 – tadman
我将来会更加小心。谢谢。 – simplytrue