# filelib

### MODULE

filelib

### MODULE SUMMARY

File utilities, such as wildcard matching of filenames

### DESCRIPTION

This module contains utilities on a higher level than the `file` module.

### EXPORTS

`ensure_dir(Name) -> ok | {error, Reason}`

Types:

`Name = filename() | dirname()`
`Reason = posix() -- see file(3)`

The `ensure_dir/1` function ensures that all parent directories for the given file or directory name `Name` exist, trying to create them if necessary.

Returns `ok` if all parent directories already exist or could be created, or `{error, Reason}` if some parent directory does not exist and could not be created for some reason.

`file_size(Filename) -> integer()`

The `file_size` function returns the size of the given file.

`fold_files(Dir, RegExp, Recursive, Fun, AccIn) -> AccOut`

Types:

`Dir = dirname()`
`RegExp = regexp()`
`Recursive = true|false`
`Fun = fun(F, AccIn) -> AccOut`
`AccIn = AccOut = term()`

The `fold_files/5` function folds the function `Fun` over all (regular) files `F` in the directory `Dir` that match the regular expression `RegExp`. If `Recursive` is true all sub-directories to `Dir` are processed. The match is tried on just the filename without the directory part.

`is_dir(Name) -> true | false`

Types:

`Name = filename() | dirname()`

The `is_dir/1` function returns `true` if `Name` refers to a directory, and `false` otherwise.

`is_file(Name) -> true | false`

Types:

`Name = filename() | dirname()`

The `is_file/1` function returns `true` if `Name` refers to a file or a directory, and `false` otherwise.

`is_regular(Name) -> true | false`

Types:

`Name = filename()`

The `is_regular/1` function returns `true` if `Name` refers to a file (regular file), and `false` otherwise.

`last_modified(Name) -> {{Year,Month,Day},{Hour,Min,Sec}}`

Types:

`Name = filename() | dirname()`

The `last_modified/1` function returns the date and time the given file or directory was last modified.

`wildcard(Wildcard) -> list()`

Types:

`Wildcard = filename() | dirname()`

The `wildcard/1` function returns a list of all files that match Unix-style wildcard-string `Wildcard`.

The wildcard string looks like an ordinary filename, except that certain "wildcard characters" are interpreted in a special way. The following characters are special:

?
  Matches one character.
*
  Matches any number of characters up to the end of the filename, the next dot, or the next slash.
{Item,...}
  Alternation. Matches one of the alternatives.

Other characters represent themselves. Only filenames that have exactly the same character in the same position will match. (Matching is case-sensitive; i.e. "a" will not match "A").

Note that multiple "*" characters are allowed (as in Unix wildcards, but opposed to Windows/DOS wildcards).

Examples:

The following examples assume that the current directory is the top of an Erlang/OTP installation.

To find all `.beam` files in all applications, the following line can be used:

        filelib:wildcard("lib/*/ebin/*.beam").

To find either `.erl` or `.hrl` in all applications `src` directories, the following

        filelib:wildcard("lib/*/src/*.?rl")

or the following line

        filelib:wildcard("lib/*/src/*.{erl,hrl}")

can be used.

To find all `.hrl` files in either `src` or `include` directories, use:

        filelib:wildcard("lib/*/{src,include}/*.hrl").

To find all `.erl` or `.hrl` files in either `src` or `include` directories, use:

        filelib:wildcard("lib/*/{src,include}/*.{erl,hrl}")

`wildcard(Wildcard, Cwd) -> list()`

Types:

`Wildcard = filename() | dirname()`
`Cwd = dirname()`

The `wildcard/2` function works like `wildcard/1`, except that instead of the actual working dirctory, `Cwd` will be used.

### AUTHORS

Bjorn Gustavsson - support@erlang.ericsson.se

stdlib 1.14.5
Copyright © 1991-2007 Ericsson AB