rubyでファイル検索ユーティリティを作成しようとしています。これはtxtファイルのファイル名のリストを取得し、コンピュータ全体を検索します。これらのファイルのいずれかが見つかった場合、ファイルは別のディレクトリに移動されます(実際に見つかったディレクトリから削除されます)。Dir.globがループ内の最後のファイルのみを評価するのはなぜですか?
検索はすべてのフォルダを一番下に移動する必要があります。私は「0001.txt」という名前のファイルを持っている上
0001.txt 0002.txt
フォルダ内:
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にファイルにこれらのエントリがあります。これまでのところ私は、次のコードを持っています。私はまた、 "0002.txt"という名前のファイルを含むsubdirという名前のフォルダにサブフォルダを持っています。私は、端末での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