はじめに
- あるディレクトリ内のファイルやディレクトリの検索や大きさや所有者とかを取得したかった。それを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も取れる。意外とシンプルにできて助かる。