Till now we have seen how to explore the Linux System, the meaning and use of wildcards, and create and delete files and directories in Linux System.
Now let us look at how we can copy, move, and rename these files and directories.
Let's start with how can we copy files and directories
1. cp
command
The cp
command stands for copy is used to copy files and directories in Linux System.
The syntax for cp
command.
We can simply use the cp
command along with the source and destination.
In the above example, we used the command cp file1.txt file2.txt
where
cp
represents the copy command
file1.txt
represents the source file "file1.txt"
file2.txt
represents the destination file "file2.txt"
So what if file2.txt did not exist?
If file2.txt exists, it is overwritten with the contents of file1. If file2.txt does not exist, it is created.
Okay but can we do something to check when the file is being overridden?
- copy file1.txt to file2.txt and prompt if file2.txt is being overridden
In the above example, we use the command cp -i file1.txt file2.txt
to copy file1.txt to file2.txt and we used to option -i
to make it interactive and provide us a prompt if file2.txt is being overridden.
Okay so now we know how to copy files but what if we need to copy all the contents from directory1 to directory2?
- copy contents of one directory to another
In the above example, we used wildcard *
and created the command cp logs1/* logs2
where
cp
represents the copy command
logs1
represents the source directory
logs1/*
represents all the contents of the directory logs1
logs2
represents the destination directory
Unlike the case of when we copy a file we need destination directory to exist when we use cp
command.
So what if we want that
If the folder does not exist then the folder should be created and then contents should be copied.
In the above example, we used the option -r
and created a command cp -r logs1 logs2
where
cp
represents the copy command
-r
represents recursively
logs1
represents the source directory
logs2
represents the destination directory
Now we know how we can copy a single file/directory but what about multiple files and directories.
The cp
command syntax for multiple files and directories
We can simply use the cp
command along with all the sources and the destination.
In the above example, we used the commands cp file1.txt file2.txt logs1
where
cp
represents the copy command
file1.txt
represents the source file file1.txt
file2.txt
represents the source file file2.txt
logs1
represents the destination directory logs1
These are the ways we can copy files/directories. Now let's have a look at how to move files/directories.
2. mv
command
The mv
command stands for move is used to move files and directories in Linux System.
The syntax for mv
command.
We can simply use the mv
command along with the source and destination.
In the above example, we used the command mv file2.txt logs1
where
mv
represents the move command
file2.txt
represents the source file file2.txt
logs1
represents the destination directory logs1
To check whether the file has been moved to the destination directory we used the command ls . logs1
where
ls
represents list command
.(Dot)
represents the current working directory
logs1
represents the destination directory logs1
What if we want to move one directory to another directory?
- move directory logs1 to directory logs2
In the above example, we used the command mv logs1 logs2
where
mv
represents the move command
logs1
represents the source directory logs1
logs2
represents the destination directory logs2
To check whether the file has been moved to the destination directory we used the command ls . logs2
where
ls
represents list command
.(Dot)
represents the current working directory
logs2
represents the destination directory logs2
So, what happens if the destination logs2 does not exist?
If the directory does not exist then a new directory is created and then the contents are moved to that directory.
Similar to what we saw with cp
command the mv
command also overwrites the files if it already exists.
But what if we want to move only those files that are not already present in the destination directory and skip files that are already present?
- move files that either doesn't exist or are newer than the existing corresponding files
In the above example, we first checked the content of the directories logs1 and logs2 and found that both logs1 and logs2 contain the file1 and file2.
After that, we used the command mv -u logs1/* logs2
where
mv
represents the move command
-u
represents update
logs1/*
represents the content inside the logs1 directory
logs2
represents the destination directory logs2
What if we want to move all the .txt files to a new folder?
- move .txt files to a folder named "text_files"
In the above example, we first listed all the contents of the current directory and then used the command mv *.txt text_files
where
mv
represents the move command
*.txt
represents all the .txt files
text_files
represents the destination directory text_files
To check whether all the files of type ".txt" have been moved or not we used the ls . text_files
command where
.
represents the current working directory
text_files
represents the destination directory text_files
Now we know how to easily move tons of files within a second just by using our wildcards.
These are the ways we can move files/directories. Now let's have a look at how to rename a file/directory.
3. mv
command for renaming
Hold on, didn't we just used the mv
command to move the files and directories?
Yes the mv
command is used for both moving as well as renaming a file/directory.
The syntax for mv
command for renaming
To rename a file we just used mv
command along with current_name and new_name
In the above example, we used the command mv original new
where
mv
represents move command
original
represents the current_name original
new
represents new_name new
Note:- Please be cautious that the new name that we are giving to the file is not the name of already existing file because if the file with new_name already exists then the file will be overridden when we use mv
command.
Let's have a look at how we can rename a directory
In the above example, we used the command mv original_folder/ new_folder
where
mv
represents move command
original_folder/
represents the current_name original_folder
new_folder
represents new_name new_folder
Okay, so that’s all the commands we need to know for Copy, Move, and Rename Files and Directories in Linux System.
I hope you understood the basics of file manipulation in Linux. Please, let me know if there are any questions.
Top comments (0)