私は多くのサブディレクトリを持つディレクトリを持っています。私は特定のファイルを含むディレクトリを見つけるためにlist.dirsとlist.filesを組み合わせて使用しています。ファイルが見つかると、list.dirsリストからサブディレクトリを削除して、残りのディレクトリにある別のファイルを探すことができます。アイデアは、コードがディレクトリのlist.dirsリストからファイルが見つかったディレクトリを削除しながら、list.filesで示すパターンを満たすファイルを探しているすべてのディレクトリを通過するようにすることです。ここでは例のディレクトリの設定は次のとおりです。ファイルが存在する場合、list.dirsからディレクトリを削除/フィルタリングします。r
subdir1
filea.txt
subdir2
fileb.txt
subdir3
filea.txt
私は、ディレクトリのリストから、現在のサブディレクトリを削除するファイルが存在する場合に文を書くしようとしましたが、成功していない:
subDirsPaths = list.dirs(path=".", full.names=TRUE)
for (subDirsPath in subDirsPaths){
setwd("/home/phil/Desktop/folder")
inFilePaths = list.files(path=".", pattern=glob2rx(print(paste("*","a.txt", sep=""))), full.names=TRUE)
for (inFilePath in inFilePaths){
inFilePath2 <- gsub("./", "", inFilePath)
if (file.exists(print(paste(inFilePath2, sep=""))))
{
print("file exists")
subDirsPaths <- subDirsPaths[-subDirsPath]
} else {}
}
}
これが実行された後、私は、私だけは、コードの前のブロックで探していたファイルが含まれていませんでしたディレクトリに別の
for(subDirsPath in subDirsPaths) {}
しかし、この時間を実行したいですそうです。
私はそれが一覧表示されます端子にsubDirsPathsを入力:あなたが見ることができるようにfilea.txtが発見されて以来、
subDirsPaths
"./subdir2"
:私はこのコードを実行した後、私が欲しいもの
subDirsPaths
"./subdir1" "./subdir2" "./subdir3"
がこれですsubdir1とsubdir3では、それらはディレクトリのリストから削除されています。
うに組み合わせてlist.files' 'で' recurse'オプションを'full.names = TRUE'オプションは簡単にできますか? –
私の実際のディレクトリには、これらのサブディレクトリ内に再帰オプションを複雑にする追加のサブディレクトリがあるためです。 –
私はあなたが欲しいものを理解しているのか分からないが、 'basename'を探していないのですか? –