Skip to content

dir_ls() is equivalent to the ls command. It returns filenames as a named fs_path character vector. The names are equivalent to the values, which is useful for passing onto functions like purrr::map_dfr().

dir_info() is equivalent to ls -l and a shortcut for file_info(dir_ls()).

dir_map() applies a function fun() to each entry in the path and returns the result in a list.

dir_walk() calls fun for its side-effect and returns the input path.

Usage

dir_ls(
  path = ".",
  all = FALSE,
  recurse = FALSE,
  type = "any",
  glob = NULL,
  regexp = NULL,
  invert = FALSE,
  fail = TRUE,
  ...,
  recursive
)

dir_map(
  path = ".",
  fun,
  all = FALSE,
  recurse = FALSE,
  type = "any",
  fail = TRUE
)

dir_walk(
  path = ".",
  fun,
  all = FALSE,
  recurse = FALSE,
  type = "any",
  fail = TRUE
)

dir_info(
  path = ".",
  all = FALSE,
  recurse = FALSE,
  type = "any",
  regexp = NULL,
  glob = NULL,
  fail = TRUE,
  ...
)

Arguments

path

A character vector of one or more paths.

all

If TRUE hidden files are also returned.

recurse

If TRUE recurse fully, if a positive number the number of levels to recurse.

type

File type(s) to return, one or more of "any", "file", "directory", "symlink", "FIFO", "socket", "character_device" or "block_device".

glob

A wildcard aka globbing pattern (e.g. *.csv) passed on to grep() to filter paths.

regexp

A regular expression (e.g. [.]csv$) passed on to grep() to filter paths.

invert

If TRUE return files which do not match

fail

Should the call fail (the default) or warn if a file cannot be accessed.

...

Additional arguments passed to grep.

recursive

(Deprecated) If TRUE recurse fully.

fun

A function, taking one parameter, the current path entry.

Examples

dir_ls(R.home("share"), type = "directory")
#> /opt/R/4.4.2/lib/R/share/R
#> /opt/R/4.4.2/lib/R/share/Rd
#> /opt/R/4.4.2/lib/R/share/dictionaries
#> /opt/R/4.4.2/lib/R/share/encodings
#> /opt/R/4.4.2/lib/R/share/java
#> /opt/R/4.4.2/lib/R/share/licenses
#> /opt/R/4.4.2/lib/R/share/make
#> /opt/R/4.4.2/lib/R/share/sh
#> /opt/R/4.4.2/lib/R/share/texmf

# Create a shorter link
link_create(system.file(package = "base"), "base")

dir_ls("base", recurse = TRUE, glob = "*.R")
#> base/demo/error.catching.R base/demo/is.things.R      
#> base/demo/recursion.R      base/demo/scoping.R        

# If you need the full paths input an absolute path
dir_ls(path_abs("base"))
#> /tmp/Rtmp9jM0mE/base/CITATION    /tmp/Rtmp9jM0mE/base/DESCRIPTION 
#> /tmp/Rtmp9jM0mE/base/INDEX       /tmp/Rtmp9jM0mE/base/Meta        
#> /tmp/Rtmp9jM0mE/base/R           /tmp/Rtmp9jM0mE/base/demo        
#> /tmp/Rtmp9jM0mE/base/help        /tmp/Rtmp9jM0mE/base/html        

dir_map("base", identity)
#> [[1]]
#> [1] "base/CITATION"
#> 
#> [[2]]
#> [1] "base/DESCRIPTION"
#> 
#> [[3]]
#> [1] "base/INDEX"
#> 
#> [[4]]
#> [1] "base/Meta"
#> 
#> [[5]]
#> [1] "base/R"
#> 
#> [[6]]
#> [1] "base/demo"
#> 
#> [[7]]
#> [1] "base/help"
#> 
#> [[8]]
#> [1] "base/html"
#> 

dir_walk("base", str)
#>  chr "base/CITATION"
#>  chr "base/DESCRIPTION"
#>  chr "base/INDEX"
#>  chr "base/Meta"
#>  chr "base/R"
#>  chr "base/demo"
#>  chr "base/help"
#>  chr "base/html"

dir_info("base")
#> # A tibble: 8 × 18
#>   path            type    size permissions modification_time   user  group
#>   <fs::path>      <fct> <fs::> <fs::perms> <dttm>              <chr> <chr>
#> 1 base/CITATION   file     643 rw-r--r--   2024-10-31 10:08:06 root  root 
#> 2 …se/DESCRIPTION file     383 rw-r--r--   2024-10-31 10:08:06 root  root 
#> 3 base/INDEX      file   24.2K rw-r--r--   2024-10-31 10:08:06 root  root 
#> 4 base/Meta       dire…     4K rwxr-xr-x   2024-11-09 13:43:46 root  root 
#> 5 base/R          dire…     4K rwxr-xr-x   2024-11-09 13:43:46 root  root 
#> 6 base/demo       dire…     4K rwxr-xr-x   2024-11-09 13:43:46 root  root 
#> 7 base/help       dire…     4K rwxr-xr-x   2024-11-09 13:43:46 root  root 
#> 8 base/html       dire…     4K rwxr-xr-x   2024-11-09 13:43:46 root  root 
#> # ℹ 11 more variables: device_id <dbl>, hard_links <dbl>,
#> #   special_device_id <dbl>, inode <dbl>, block_size <dbl>, blocks <dbl>,
#> #   flags <int>, generation <dbl>, access_time <dttm>,
#> #   change_time <dttm>, birth_time <dttm>

# Cleanup
link_delete("base")