【Ruby Tips】FileUtils.mvで*(アスタリスク)を使う / ディレクトリを上書きする

Ruby/Rails
スポンサーリンク

概要

RubyのFileUtils.mvで*(アスタリスク)を使用したワイルドカード指定や、ディレクトリの上書きはできないから、やり方気をつけようね。という話。

*(アスタリスク)を使ってワイルドカード指定を行う

Dir.globを使って配列で渡してあげます。

# これだとエラー
FileUtils.mv(“/tmp/a/*.csv”, “/tmp/b/“)

# Dir.globを使えば解決
FileUtils.mv(Dir.glob(“/tmp/a/*.csv”), “/tmp/b/“)

ディレクトリを上書きしてmvする

結論から言うとディレクトリを一度削除してからmvします。(他にいい方法があるなら教えてほしい…)

強制上書きするforceオプション的なものがありそうですが、無いようでした。

optionsに:forceというパラメータはありますが、これをtrueにしてもエラーが無視されるだけで上書きするようになるわけではありません。

# ディレトクリが存在することを確認して消す
FileUtils.rm_rf(“/tmp/b/”) if Dir.exist?(“/tmp/b/”)

# ディレクトリを作る
FileUtils.mkdir_p(“/tmp/b/”)

# mvする
FileUtils.mv(“/tmp/a/”, “/tmp/b/“)

コメント

タイトルとURLをコピーしました