同じパターンのディレクトリから別のディレクトリにフォルダやファイルをコピーするとRubyスクリプトを作成したいと思います。例えばパターンマッチングディレクトリ内の特定のファイルを取得する方法Ruby
、私はあるディレクトリのパターン検索する場合:
"./file/drive_Temp/**/tools/"
をそれができる:
- ./file/drive_Temp/abc/tools/
- ./file/drive_Temp/def/tools/
- ./file/drive_Temp/xyz/tools/
は限り前部が「./file/drive_Temp/」で始まり、 『/ツール/』で終わるよう。
私は何をしたい新しいディレクトリに述べたように、ディレクトリのパターンを満たすすべてのファイルをコピーすることです。
などの次のディレクトリにあるいくつかのファイルがある場合があります。
- ./file/drive_Temp/abc/tools/aaa.txt
- ./file/drive_Temp/abc/tools/bbb.txt
- ./file/drive_Temp/abc/tools/ccc.txt
- ./file/drive_Temp/def/tools/zzz.txt
- ./file/drive_Temp/def/tools/yyy.txt
- ./file/drive_Temp/def/tools/qqq.txt
- ./file/drive_Temp/xyz/tools/ttt.txt
- ./file/drive_Temp/xyz/tools/jjj.txt
これらのtxtファイルは、ツール
というディレクトリへの移動になりますこれは私のコードです:
if File.directory?('./file/drive_Temp/**/tools')
FileUtils.mv './file/drive_Temp/**/tools/*.*','./Tools'
end
ダブルアスタリスクは機能していませんか?フォルダを指定されたディレクトリに移動できなかったためです。代わりにglob
を使用する必要がありますか?
私はあなたのロジックが少し壊れていると思います。./file/drive_Temp/abc/の下にある 'tools'ディレクトリの最初のコピーの後にmvコマンドを実行しても、コマンドは./file/drive_Temp/def/の 'tools'ディレクトリとしてエラーを送出します既に存在するだろう。あなたが達成しようとしていることをアドバイスしてください。 – grail
私は私の質問に変更を加えました。フォルダが存在するかどうかを確認して、ディレクトリ内のファイルを新しいディレクトリに移動したい場合 – kerrysugu
既存のフォルダをチェックする必要はなく、 'Dir'を使用してそのディレクトリ内のファイルを直接取得できますパターン。投稿された回答を確認してください。 – Gerry