module

FileUtils

NOTE: To use FileUtils, you must explicitly import it with require "file_utils"

Instance methods

cd(path : Path | String) : Nil

Changes the current working directory of the process to the given string path.

require "file_utils"

FileUtils.cd("/tmp")

NOTE: Alias of Dir.cd

Source
cd(path : Path | String, &)

Changes the current working directory of the process to the given string path and invoked the block, restoring the original working directory when the block exits.

require "file_utils"

FileUtils.cd("/tmp") { Dir.current } # => "/tmp"

NOTE: Alias of Dir.cd with block

Source
cmp(filename1 : Path | String, filename2 : Path | String) : Bool

Compares two files filename1 to filename2 to determine if they are identical. Returns true if content are the same, false otherwise.

require "file_utils"

File.write("file.cr", "1")
File.write("bar.cr", "1")
FileUtils.cmp("file.cr", "bar.cr") # => true

NOTE: Alias of File.same_content?

Source
cp(src_path : Path | String, dest : Path | String) : Nil

Copies the file src_path to the file or directory dest. If dest is a directory, a file with the same basename as src_path is created in dest Permission bits are copied too.

require "file_utils"

File.touch("afile")
File.chmod("afile", 0o600)
FileUtils.cp("afile", "afile_copy")
File.info("afile_copy").permissions.value # => 0o600
Source
cp(srcs : Enumerable(Path | String), dest : Path | String) : Nil

Copies a list of files src to dest. dest must be an existing directory.

require "file_utils"

Dir.mkdir("files")
FileUtils.cp({"bar.cr", "afile"}, "files")
Source
cp_r(src_path : Path | String, dest_path : Path | String) : Nil

Copies a file or directory src_path to dest_path. If src_path is a directory, this method copies all its contents recursively. If dest is a directory, copies src to dest/src.

require "file_utils"

FileUtils.cp_r("files", "dir")
Source
ln(src_path : Path | String, dest_path : Path | String) : Nil

Creates a hard link dest_path which points to src_path. If dest_path already exists and is a directory, creates a link dest_path/src_path.

require "file_utils"

# Create a hard link, pointing from /usr/bin/emacs to /usr/bin/vim
FileUtils.ln("/usr/bin/vim", "/usr/bin/emacs")
# Create a hard link, pointing from /tmp/foo.c to foo.c
FileUtils.ln("foo.c", "/tmp")
Source
ln(src_paths : Enumerable(Path | String), dest_dir : Path | String) : Nil

Creates a hard link to each path in src_paths inside the dest_dir directory. If dest_dir is not a directory, raises an ArgumentError.

require "file_utils"

# Create /usr/bin/vim, /usr/bin/emacs, and /usr/bin/nano as hard links
FileUtils.ln(["vim", "emacs", "nano"], "/usr/bin")
Source
ln_s(src_path : Path | String, dest_path : Path | String) : Nil

Creates a symbolic link dest_path which points to src_path. If dest_path already exists and is a directory, creates a link dest_path/src_path.

require "file_utils"

# Create a symbolic link pointing from logs to /var/log
FileUtils.ln_s("/var/log", "logs")
# Create a symbolic link pointing from /tmp/src to src
FileUtils.ln_s("src", "/tmp")
Source
ln_s(src_paths : Enumerable(Path | String), dest_dir : Path | String) : Nil

Creates a symbolic link to each path in src_paths inside the dest_dir directory. If dest_dir is not a directory, raises an ArgumentError.

require "file_utils"

# Create symbolic links in src/ pointing to every .c file in the current directory
FileUtils.ln_s(Dir["*.c"], "src")
Source
ln_sf(src_path : Path | String, dest_path : Path | String) : Nil

Like #ln_s(Path | String, Path | String), but overwrites dest_path if it exists and is not a directory or if dest_path/src_path exists.

require "file_utils"

# Create a symbolic link pointing from bar.c to foo.c, even if bar.c already exists
FileUtils.ln_sf("foo.c", "bar.c")
Source
ln_sf(src_paths : Enumerable(Path | String), dest_dir : Path | String) : Nil

Creates a symbolic link to each path in src_paths inside the dest_dir directory, ignoring any overwritten paths.

If dest_dir is not a directory, raises an ArgumentError.

require "file_utils"

# Create symbolic links in src/ pointing to every .c file in the current directory,
# even if it means overwriting files in src/
FileUtils.ln_sf(Dir["*.c"], "src")
Source
mkdir(path : Path | String, mode = 511) : Nil

Creates a new directory at the given path. The linux-style permission mode can be specified, with a default of 777 (0o777).

require "file_utils"

FileUtils.mkdir("src")

NOTE: Alias of Dir.mkdir

Source
mkdir(paths : Enumerable(Path | String), mode = 511) : Nil

Creates a new directory at the given paths. The linux-style permission mode can be specified, with a default of 777 (0o777).

require "file_utils"

FileUtils.mkdir(["foo", "bar"])
Source
mkdir_p(path : Path | String, mode = 511) : Nil

Creates a new directory at the given path, including any non-existing intermediate directories. The linux-style permission mode can be specified, with a default of 777 (0o777).

require "file_utils"

FileUtils.mkdir_p("foo")

NOTE: Alias of Dir.mkdir_p

Source
mkdir_p(paths : Enumerable(Path | String), mode = 511) : Nil

Creates a new directory at the given paths, including any non-existing intermediate directories. The linux-style permission mode can be specified, with a default of 777 (0o777).

require "file_utils"

FileUtils.mkdir_p(["foo", "bar", "baz", "dir1", "dir2", "dir3"])
Source
mv(src_path : Path | String, dest_path : Path | String) : Nil

Moves src_path to dest_path.

NOTE: If src_path and dest_path exist on different mounted filesystems, the file at src_path is copied to dest_path and then removed.

require "file_utils"

FileUtils.mv("afile", "afile.cr")
Source
mv(srcs : Enumerable(Path | String), dest : Path | String) : Nil

Moves every srcs to dest.

require "file_utils"

FileUtils.mv(["foo", "bar"], "src")
Source
pwd

Returns the current working directory.

require "file_utils"

FileUtils.pwd

NOTE: Alias of Dir.current

Source
rm(path : Path | String) : Nil

Deletes the path file given, raises if the path does not exist.

require "file_utils"

FileUtils.rm("afile.cr")

NOTE: Alias of File.delete

Source
rm(paths : Enumerable(Path | String)) : Nil

Deletes all paths files given, raises if any of the paths doesn't exist.

require "file_utils"

FileUtils.rm(["dir/afile", "afile_copy"])
Source
rm_f(path : Path | String) : Nil

Deletes the given path file, ignoring it if it does not exist.

require "file_utils"

FileUtils.rm_f("afile.cr")

NOTE: Alias of File.delete?

Source
rm_f(paths : Enumerable(Path | String)) : Nil

Deletes all paths files given, ignoring non-existing ones.

require "file_utils"

FileUtils.rm_f(["dir/afile", "afile_copy"])
Source
rm_r(path : Path | String) : Nil

Deletes a file or directory path. If path is a directory, this method removes all its contents recursively.

require "file_utils"

FileUtils.rm_r("dir")
FileUtils.rm_r("file.cr")
Source
rm_r(paths : Enumerable(Path | String)) : Nil

Deletes a list of files or directories paths. If one path is a directory, this method removes all its contents recursively.

require "file_utils"

FileUtils.rm_r(["files", "bar.cr"])
Source
rm_rf(path : Path | String) : Nil

Deletes a file or directory path. If path is a directory, this method removes all its contents recursively. Ignores all errors.

require "file_utils"

FileUtils.rm_rf("dir")
FileUtils.rm_rf("file.cr")
FileUtils.rm_rf("non_existent_file")
Source
rm_rf(paths : Enumerable(Path | String)) : Nil

Deletes a list of files or directories paths. If one path is a directory, this method removes all its contents recursively. Ignores all errors.

require "file_utils"

FileUtils.rm_rf(["dir", "file.cr", "non_existent_file"])
Source
rmdir(path : Path | String) : Nil

Removes the directory at the given path.

require "file_utils"

FileUtils.rmdir("baz")

NOTE: Alias of Dir.delete

Source
rmdir(paths : Enumerable(Path | String)) : Nil

Removes all directories at the given paths.

require "file_utils"

FileUtils.rmdir(["dir1", "dir2", "dir3"])
Source
touch(path : Path | String, time : Time = Time.utc) : Nil

Attempts to set the access and modification times of the file named in the path parameter to the value given in time.

If the file does not exist, it will be created.

require "file_utils"

FileUtils.touch("afile.cr")

NOTE: Alias of File.touch

Source
touch(paths : Enumerable(Path | String), time : Time = Time.utc) : Nil

Attempts to set the access and modification times of each file given in the paths parameter to the value given in time.

If the file does not exist, it will be created.

require "file_utils"

FileUtils.touch(["foo", "bar"])
Source