はじめに
過去に、R環境から行う、 フォルダの基本操作(作成・削除・コピー・名前変更・移動)について纏め記事を書きました。
この続編的な内容で、ファイルを別ディレクトリに移動させる話となります。
Baseパッケージには適当な関数*1が用意されていないので、
便利なファイル・文字列操作ツールである、filesstrings
パッケージ内の関数を使っています。
このfilesstrings
パッケージは、
当初、ファイルや文字列を操作するためのパッケージとしてスタートしました。
その後、fs
ファイル操作パッケージとstrex
文字列操作パッケージが出現し
これらパッケージが提供していた機能も提供するようになっています。
そのため、これらのパッケージはfilesstrings
パッケージの機能をほとんど消滅に追いやったと言われますが、
このパッケージはユニークで便利なファイル操作関数をいくつか内在しています。
今回、filesstrings
パッケージのファイル操作関数を紹介します。
とあるディレクトリとファイル構成について
まずは、例題として扱う、ディレクトリとファイル構成を概説します。
#テストディレクトリ移動 setwd("./test") #フォルダ・ファイルの表示 list.files(recursive = F) #[1] "test_A" "test_B.txt" "test_C.txt" "test_D.txt"
架空のフォルダ・ファイル構成として、
test
というディレクトリに入ると、そこには、
test_A
というフォルダ、またtest_B.txt
などのファイルがあると仮定します。
例題として、test_A
というあるフォルダに、
test_B
とtest_C.txt
とかのファイルを移動させます。
まずは、filesstringsパッケージをインストールする
install.packages関数で、パッケージのインストールを行います。
#filesstringsのインストール install.packages("filesstrings") library(filesstrings)
ファイルを移動させる関数群
ファイルを移動させる関数*2には、move_files関数とfile.move関数があります。
以下の通り、move_filesとfile.moveは、全く同じ使い方です。
#move_filesを使う場合 filesstrings::move_files(files="test_B.txt", destinations="test_A", overwrite = FALSE) #1 files moved. 0 failed. #file.moveを使う場合 filesstrings::file.move(files="test_C.txt", destinations="test_A", overwrite = FALSE) #1 files moved. 0 failed.
この関数では、
files
: 移動するファイル/フォルダの文字ベクトル(相対パスまたは絶対パス)。destinations
: ファイルを移動させる先のディレクトリの文字ベクトル.overwrite
: ファイルの上書きを許可するか?デフォルトは「FALSE」。
が引数として指定できます。
同時に、N個のものを移動させる場合
#両ファイルをベクトルの変数に入れる Files <- c("test_B.txt", "test_C.txt") #OR dir関数を使う #Files <- dir("test_A", pattern = "txt") #file.moveを使う場合 filesstrings::file.move(files=paste0("./test_A/", Files), destinations="../test", overwrite = FALSE) #2 files moved. 0 failed.
これを実行すると、元のファイル構成に戻っています。
つまりは、filesの引数に文字列ベクトルを与えることで、複数のファイルを同時に移動させられます。
まとめ
filesstrings
パッケージは時々重宝します。