ruby で特定のディレクトリに存在するフォルダの一覧を取得するにはどうすればよいですか?
Dir.entries()
近くに見えますが、フォルダーのみに制限する方法がわかりません。
ruby で特定のディレクトリに存在するフォルダの一覧を取得するにはどうすればよいですか?
Dir.entries()
近くに見えますが、フォルダーのみに制限する方法がわかりません。
これはより便利で使いやすいことがわかりました:
Dir.chdir('/destination_directory')
Dir.glob('*').select {|f| File.directory? f}
現在のディレクトリ内のすべてのフォルダーを取得し、除外され.
ます..
。
フォルダーを再帰する**
には、*
.
行はブロックとして Dir.glob
渡すこともできます:Dir.chdir
Dir.chdir('/destination directory') do
Dir.glob('*').select { |f| File.directory? f }
end
Jordan は近いですが、期待するDir.entries
完全なパスを返しません。File.directory?
これを試して:
Dir.entries('/your_dir').select {|entry| File.directory? File.join('/your_dir',entry) and !(entry =='.' || entry == '..') }
私の意見Pathname
では、プレーンな文字列よりもファイル名に適しています。
require "pathname"
Pathname.new(directory_name).children.select { |c| c.directory? }
これにより、そのディレクトリ内のすべてのディレクトリの配列が Pathname オブジェクトとして得られます。
文字列が必要な場合
Pathname.new(directory_name).children.select { |c| c.directory? }.collect { |p| p.to_s }
が絶対だった場合directory_name
、これらの文字列も絶対です。
directory = 'Folder'
puts Dir.entries(directory).select { |file| File.directory? File.join(directory, file)}
モジュールから使用File.directory?
してFileTest
、ファイルがディレクトリかどうかを調べることができます。これを組み合わせるとDir.entries
、素敵な(っぽい)ライナーになります:
directory = 'some_dir'
Dir.entries(directory).select { |file| File.directory?(File.join(directory, file)) }
編集: ScottDの修正ごとに更新。
Dir.glob('/your_dir').reject {|e| !File.directory?(e)}
$dir_target = "/Users/david/Movies/Camtasia 2/AzureMobileServices.cmproj/media"
Dir.glob("#{$dir_target}/**/*").each do |f|
if File.directory?(f)
puts "#{f}\n"
end
end
各ファイルをテストして、FileTest.directory? (file_name)
. 詳細については、FileTest のドキュメントを参照してください。