Manage files and directories
Creating, renaming, and removing files and directories.
Creating empty files
The touch <file>
command can be used to create new empty files.
Multiple files can be created in a single command.
For instance:
touch a.txt b.csv
If a file already exists, the touch
command does not edit the contents of the file,
but update the timestamp of the latest edit to the current date-time.
Creating directories
The mkdir
command can be used to create new directories.
Multiple directories can be created in a single command.
For instance:
mkdir dir1 dir2
Copying files
The cp
command can be used to make a copy of a file.
The command requires two arguments:
- first, the filepath to the original file
- second, the path to the file where the copy must be made
For instance:
cp a.txt a_copy.txt
Copying directories
The cp
command can be used with the option -r
to recursively copy a directory
and its contents to a new directory.
Similarly to the copy of files the command requires two arguments:
- first, the location of the original directory
- second, the path to the new directory to create as a copy.
Moving and renaming files
The mv
command can be used to both move and rename files.
In particular, renaming a file can be seen as moving the file from one name to another, within the same directory. Meanwhile, a file can be moved to another directory, either keeping the name of the file or renaming the file at the same time.
For instance, a file file1.txt
can be renamed to file1.csv
as follows:
mv file1.txt file1.csv
On the other hand, moving a file file1.txt
to another directory
– without renaming the file itself –
can be done as follows:
mv file1.txt ../another_demo_dir/
Remember that absolute paths may be used, both for the file to move and the directory to move it into:
mv /path/to/file1.txt /path/to/new/directory
Finally, a file can be moved to another directory and renamed in a single command as follows:
mv file1.txt ../another_demo_dir/file1.csv
Moving and renaming directories
Similarly to files, directories can be moved and renamed using the mv
command.
For instance, a directory dir1
can be renamed to dir2
as follows:
mv dir1 dir2
However, if the the new directory already exist, the Bash session will then interpret the command as a request to move the first directory into the second one.
mv dir1 dir2
Removing files and directories
The rm
command can be used to remove files and directories.
Files
For files, the rm
command takes the name(s) of one or more file(s)
to remove.
rm file1.txt
Multiple files can be removed in a single command,
stating individual filenames and/or using the wildcard symbol *
.
For instance, the next command demonstrates how to remove
the files named file1.txt
and file1.csv
,
along with all files whose names start with file2
and all files that end with .csv
:
rm file1.txt file1.csv file2* *.csv
Directories
For directories, the rm
command must be used with the option -r
.
The option -r
indicates that the directory must be remove recursively,
meaning that any content in the directory will be removed as well.
Refer to the rmdir
command below for a safer alternative.
rm -r dir1
It is possible to verbosely display the list of files and directories that are removed
by the rm
command using the option -v
.
As a safer alternative, the rmdir
command can be used to remove only empty directories.
The command will raise an error when attempting to remove a directories that are not empty.
In the example below, the rmdir
command is asked to remove two directories.
However, one of those directories is not empty, and only the empty directory is
actually removed.
rmdir dir1 dir2
Cheatsheet
Common options for the rm
command are listed below,
in alphabetical order of the option flag.
Option | Long option | Descrition |
---|---|---|
-i | --interactive | Interactively prompt the user for confirmation before deleting files. Without this option, files are silently deleted. |
-r | --recursive | Recursively delete directories. This option is required to delete directories. |
-f | --force | Do not prompt and ignore errors due to nonexistent files. This overrides the -i option. Use with extreme care. |
-v | --verbose | Display informative messages as deletions are performed. |