Files Manipulation

Files Manipulation

May 27, 2023·

6 min read

Play this article

GitHub Logo

When working with files and directories, there are basic commands that can be used for manipulation. These commands include:

  • cp (copy)

  • mv (move)

  • rm (remove)

  • mkdir (make directory)

  • rmdir (remove directory)

Before we delve into these commands, let's create a new file. Name it filename.txt and add some random text to it. Make sure you navigate to its directory using your terminal.

cp - Copy

The cp command is used to copy files or directories from one location to another. It creates a duplicate of the specified file or directory, which can be placed in the same directory or a different one. The common format for the cp command is:

cp <file_name> <new_file_name>

For example, in the code below, already exists. We will create and copy all the contents from into


The cp command can also be used to copy multiple files. Make sure file_name1, file_name2, etc., exist:

cp  <file_name1> <file_name2> ...<new_file_name2>

In the code below, and already exist:


If you want to copy all the contents from all the .md files in a directory to a destination file, you can use the wildcard *:

cp *.md <destination_file_name>

For example:

cp *md

To copy a file to a specific directory, create a new directory or folder in your root directory and run the command in the following format:

cp <file_name> <directory/new_file_name>

For example:

cp folder/

Just like the commands above, you can add the -i flag to the cp command. When used, it prompts for confirmation before overwriting an existing file.

To create a new file and put content in it, which is different from an already existing file:

cp -i <file_name1> <file_name2>

For example:

cp -i

When you run the above code in your terminal, you will be prompted if you want to overwrite the file (if <file_name2>already exists). You can enter y (or yes) to override the content of <file_name2\> with the content of <file_name1\>. Enter n (or no) or just click the enter button if you do not want to overwrite it.

cp: overwrite ''?

When you need to copy the contents of an existing directory <dir1> to a new directory <dir2>, including all subdirectories and files, you can utilize the cp command with the -R flag. This flag enables recursive copying, ensuring that the entire directory structure is preserved.

Here's how you can accomplish this:

cp -R <dir1> <dir2>

In this command, <dir1> represents the source directory whose contents you want to copy, and <dir2> is the destination directory where you want to create the copied contents.

The -R flag tells the cp command to perform a recursive copy, ensuring that all subdirectories and files within <dir1> are copied to <dir2>. If <dir2> does not exist, it will be created during the copying process.

Note: that the -R flag is crucial when you want to copy directories, as it allows for the copying of both the directory's contents and its subdirectories.

By utilizing the cp command with the -R flag, you can efficiently copy the entire contents of one directory to another, preserving the structure and ensuring that all files and subdirectories are successfully copied.

Suppose you have an existing directory named documentation, and you want to move all of its files and subdirectories to a new directory called reserve. You can achieve this by using the cp command with the -R flag for recursive copying.

cp -R documentation reserve

mv - Move

The mv command not only allows you to move individual files but also provides the flexibility to move multiple files into another directory (folder) simultaneously.

To move multiple files to a destination directory, you can use the following syntax:

mv <file1> <file2> <destination_directory>

In this example, both <file1> and <file2> will be moved to <destination_directory>. The files will no longer exist in their original location and will be consolidated in the specified <destination_directory>.

For instance, consider the command:

mv file1 file2 destination_folder

After executing this command, both file1 and file2 will be moved to the destination_folder. These files will no longer be present in their original location, ensuring a streamlined organization of your files.

The mv command's ability to move multiple files simultaneously simplifies the process of managing and rearranging files within your system.

Note: You can use the wildcard pattern * and the i flag if you wish to:

mv -i *.txt backup

Using the wildcard pattern * in combination with the mv command allows for efficient and streamlined file movements, especially when dealing with large numbers of files.

mv doc/ documentation

In this case, the file located in the doc directory will be moved to the documentation directory. The file will be deleted from the doc directory, and if the documentation directory does not exist, it will be created automatically.

The mv command is a versatile tool for organizing files and directories within your system. It allows you to seamlessly move files between directories, ensuring that your file structure remains well-organized and up-to-date.

rm- Remove

The rm command is used to delete files and directories from your system. It is important to exercise caution when using this command, as deleted files or folders cannot be recovered.

To remove a single file, use the following command:

rm <file_name>

Alternatively, you can use the -i flag to be prompted for confirmation before deleting a file or folder:

rm -i <file_name>

For example, to remove the file "" located in the "doc" directory, you can run:

rm -i doc/

The prompt will ask the following question:

rm: remove regular file 'doc/'?

If you type y (or yes), the file will be deleted.

To delete an entire folder or directory, you need to use the -r flag, which stands for "recursive":

rm -r <dir>

For instance, to delete the "folder1" directory and its contents, you can execute:

rm -r folder1

If you wish to delete multiple folders or directories, you can use either the -r or -rf flag:

rm -r <dir1> <dir2> ...
rm -rf <dir1> <dir2> ...

Note: that the rm -rf command is more aggressive and powerful than rm -r. It bypasses confirmation prompts and forcefully removes directories and their contents. This option should be used with caution to prevent accidental data loss.

Remember to double-check your commands before executing them to ensure you are deleting the intended files or directories.

mkdir - Make Directory

The mkdir command is used to create a new directory.

To create a single directory, use the following command:

mkdir <dir_name>

For example, to create a directory named "folder", you can run:

mkdir folder

You can also create multiple directories at once by specifying their names:

mkdir <dir1> <dir2> ...

For example, to create directories named "folder1", "folder2", and "folder3", you can execute:

mkdir folder1 folder2 folder3

Note: that if a directory with the same name already exists, the mkdir command will generate an error. To avoid this, you can use the -p flag, which stands for "parents" and allows the creation of nested directories. This way, if any intermediate directories are missing, they will be created as well.

mkdir -p <dir_path>

For instance, to create a directory named "nested" inside a directory named "parent" (assuming "parent" doesn't exist yet), you can use:

mkdir -p parent/nested

This will create both the "parent" and "nested" directories.

Remember to choose meaningful and descriptive names for your directories to keep your file system organized and easily navigable.

rmdir - Remove Directory

The command rmdir is the opposite of mkdir. It deletes a folder only when it is empty.

View on GitHub