Provided by: erlang-manpages_16.b.3-dfsg-1ubuntu2.2_all bug

NAME

       filelib - File utilities, such as wildcard matching of filenames

DESCRIPTION

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

       This  module  does not support "raw" file names (i.e. files whose names do not comply with
       the expected encoding). Such files will be ignored by the functions in this module.

       For more information about raw file names, see the file module.

DATA TYPES

       filename() = file:name()

       dirname() = filename()

       dirname_all() = filename_all()

       filename_all() = file:name_all()

EXPORTS

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

              Types:

                 Name = filename_all() | dirname_all()
                 Reason = file:posix()

              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() >= 0

              Types:

                 Filename = filename_all()

              The file_size function returns the size of the given file.

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

              Types:

                 Dir = dirname()
                 RegExp = string()
                 Recursive = boolean()
                 Fun = fun((F :: file:filename(), 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 (see the  re  module  for  a
              description  of  the  allowed  regular  expressions). If Recursive is true all sub-
              directories to Dir are processed. The regular expression matching is done  on  just
              the filename without the directory part.

              If  Unicode  file  name  translation is in effect and the file system is completely
              transparent, file names that cannot be interpreted as Unicode may  be  encountered,
              in  which case the fun() must be prepared to handle raw file names (i.e. binaries).
              If the regular expression contains codepoints beyond 255, it will  not  match  file
              names  that do not conform to the expected character encoding (i.e. are not encoded
              in valid UTF-8).

              For more information about raw file names, see the file module.

       is_dir(Name) -> boolean()

              Types:

                 Name = filename_all() | dirname_all()

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

       is_file(Name) -> boolean()

              Types:

                 Name = filename_all() | dirname_all()

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

       is_regular(Name) -> boolean()

              Types:

                 Name = filename_all()

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

       last_modified(Name) -> file:date_time() | 0

              Types:

                 Name = filename_all() | dirname_all()

              The  last_modified/1 function returns the date and time the given file or directory
              was last modified, or 0 if the file does not exist.

       wildcard(Wildcard) -> [file:filename()]

              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.

                **:
                  Two adjacent *'s used as a single pattern will match all files and zero or more
                  directories and subdirectories.

                [Character1,Character2,...]:
                  Matches any of the characters listed. Two characters separated by a hyphen will
                  match a range of characters. Example: [A-Z] will match any uppercase letter.

                {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}")

              To find all .erl or .hrl files in any subdirectory, use:

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

       wildcard(Wildcard, Cwd) -> [file:filename()]

              Types:

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

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