質問
ファイルをディレクトリの直下のサブディレクトリにコピーする簡単なルビースクリプトを記述しようとしています。直接のサブディレクトリのみを取得するにはどうすればよいですか?
解決
Dir.glob(" ** /")
は、現在のディレクトリの下にあるすべてのパスの配列を返します。そこからリストをフィルタリングし、 File.copy(from、to)
他のヒント
即時サブディレクトリのみが必要な場合、 Dir ['* /']
(Micheal Sepcotとglenraの回答を組み合わせたもの)を使用できます。
すべての即時サブディレクトリ(現在の1レベル下)を見つける場合は、これを試してください:
Dir.chdir("/some/path/you/want/to/check/below")
subdir_list=Dir["*"].reject{|o| not File.directory?(o)}
つまり、ディレクトリをどこかで変更し、そこにあるファイルの配列を構築し、ディレクトリではない配列要素を拒否し、結果のカリングされた配列を返します。
おそらく、Rubyでファイルを処理する最良の方法は、 パス名
。いくつかのファイルベースのモジュールのクラスメソッドを1つの使いやすいOOPクラスに結合します。したがって、 Dir
や File
を使用する場合のように、メソッドに値を渡す必要はありません。オブジェクト自体でメソッドを呼び出すことができます。
サブディレクトリを直接印刷する方法は次のとおりです。
require 'pathname'
puts Pathname('some/directory').children.select(&:directory?)
所属していません StackOverflow