blob: a6aec07204e4d0c5618d19b9fc23076e5a88705a [file] [log] [blame]
% File src/library/base/man/list.files.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2019 R Core Team
% Distributed under GPL 2 or later
\name{list.files}
\alias{list.files}
\alias{dir}
\alias{list.dirs}
\title{List the Files in a Directory/Folder}
\usage{
list.files(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)
dir(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)
list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
}
\arguments{
\item{path}{a character vector of full path names; the default
corresponds to the working directory, \code{\link{getwd}()}. Tilde
expansion (see \code{\link{path.expand}}) is performed. Missing
values will be ignored. Elements with a marked encoding will
be converted to the native encoding.}
\item{pattern}{an optional \link{regular expression}. Only file names
which match the regular expression will be returned.}
\item{all.files}{a logical value. If \code{FALSE}, only the
names of visible files are returned. If \code{TRUE},
all file names will be returned.}
\item{full.names}{a logical value. If \code{TRUE}, the directory
path is prepended to the file names to give a relative file path.
If \code{FALSE}, the file names (rather than paths) are returned.}
\item{recursive}{logical. Should the listing recurse into directories?}
\item{ignore.case}{logical. Should pattern-matching be case-insensitive?}
\item{include.dirs}{logical. Should subdirectory names be included in
recursive listings? (They always are in non-recursive ones).}
\item{no..}{logical. Should both \code{"."} and \code{".."} be excluded
also from non-recursive listings?}
}
\description{
These functions produce a character vector of the names of files or
directories in the named directory.
}
\value{
A character vector containing the names of the files in the
specified directories (empty if there were no files). If a
path does not exist or is not a directory or is unreadable it
is skipped.
The files are sorted in alphabetical order, on the full path
if \code{full.names = TRUE}.
\code{list.dirs} implicitly has \code{all.files = TRUE}, and if
\code{recursive = TRUE}, the answer includes \code{path} itself
(provided it is a readable directory).
}
\author{Ross Ihaka, Brian Ripley}
\note{
File naming conventions are platform dependent. The pattern matching
works with the case of file names as returned by the OS.
#ifdef unix
On a POSIX filesystem recursive listings will follow symbolic links to
directories.
#endif
#ifdef windows
\code{path} must specify paths which can be represented in the current
codepage, and files/directories below \code{path} whose names cannot
be represented in that codepage will most likely not be found.
#endif
}
\seealso{\code{\link{file.info}}, \code{\link{file.access}}
and \code{\link{files}} for many more file handling functions and
\code{\link{file.choose}}
#ifdef windows
and \code{\link{choose.files}}
#endif
for interactive selection.
\code{\link{glob2rx}} to convert wildcards (as used by system file
commands and shells) to regular expressions.
\code{\link{Sys.glob}} for wildcard expansion on file paths.
}
\examples{
list.files(R.home())
## Only files starting with a-l or r
## Note that a-l is locale-dependent, but using case-insensitive
## matching makes it unambiguous in English locales
dir("../..", pattern = "^[a-lr]", full.names = TRUE, ignore.case = TRUE)
list.dirs(R.home("doc"))
list.dirs(R.home("doc"), full.names = FALSE)
}
\keyword{file}