LoginSignup
11
18

More than 5 years have passed since last update.

Rでファイル・ディレクトリの情報取得&変更

Last updated at Posted at 2015-11-04

はじめに

  • あるディレクトリ内のファイルやディレクトリの検索や大きさや所有者とかを取得したかった。それをRで実際にやってみたときのメモ。

あるファイルの存在判定:file.exists(filename)

> file.exists("/data/dataset1/data1.txt")
[1] TRUE

あるディレクトリのファイル検索:list.files()

> list.files("/data")
 [1] "dataset1"                        "dataset2"             
 [3] "dataset3"

あるディレクトリのファイル検索(階層的に):list.files()

> list.files("/data/dataset1/", recursive = TRUE)
[1] "data1.csv" "data/data2.csv"  

あるディレクトリのファイル検索(フルパスで):list.files()

> list.files("/data/uci/hayes-roth", full.names = TRUE)
[1] "/data/uci/hayes-roth/accuracy.txt"                 
[2] "/data/uci/hayes-roth/hayes-roth-test1-1.tsv"
<snip>

ファイル・ディレクトリ所有者:file.info()

> file.info("/data/dataset1/")
             size isdir mode               mtime               ctime               atime  uid
/data/dataset1/ 4096  TRUE 2770 2015-09-10 17:36:53 2015-11-04 15:50:47 2015-05-07 19:26:31 1119
              gid           uname grname
/data/dataset1/ 2031 hoge.hogehoge  hohoge
> file.info("/data/dataset1/")$uname
[1] "hoge.hogehoge"

ディレクトリのサイズ:file.info()で処理

sum(file.info(paste("/data/dataset1/",list.files("/data/dataset1", all.files=TRUE, recursive = TRUE),sep=""))$size)
[1] 372407977

ディレクトリ内のファイル数:litt.files()

> length(list.files("/data/dataset1/", all.files = TRUE, recursive = TRUE))
[1] 100

ディレクトリ作成:dir.create()

  • 再帰的には、reccursive = T
DIR <- "/data/dataset2/dataset3"
dir.create(DIR, showWarnings = F, recursive = T)

chmod

Sys.chmod("/data/dataset1/data.csv"), mode = "0770", use_umask = FALSE)

おわりに

atime,ctime,mtimeも取れる。意外とシンプルにできて助かる。

11
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
18