
- Kali Linux Tutorial
- Kali Linux - Home
- Installation & Configuration
- Information Gathering Tools
- Vulnerability Analyses Tools
- Kali Linux - Wireless Attacks
- Website Penetration Testing
- Kali Linux - Exploitation Tools
- Kali Linux - Forensics Tools
- Kali Linux - Social Engineering
- Kali Linux - Stressing Tools
- Kali Linux - Sniffing & Spoofing
- Kali Linux - Password Cracking Tools
- Kali Linux - Maintaining Access
- Kali Linux - Reverse Engineering
- Kali Linux - Reporting Tools
- Kali Linux Useful Resources
- Kali Linux - Quick Guide
- Kali Linux - Useful Resources
- Kali Linux - Discussion
How to swap two files in Linux command line?
As system administrators or DevOps functions, many times we come with the requirement to exchange files content, for example, suppose you have a backup file of /etc/passwd by name /etc/password.backup and you want to restore the same in /etc/passwd but you also want current content of /etc/password should be copied to /etc/passwd.backup. In other words, exchange content of /etc/passwd with /etc/passwd.backup and /etc/passwd.backup with /etc/passwd.
The Linux operating system's useful tools and commands enable you to achieve/accomplish a wide range of file manipulation goals. For one reason or another, you may need to swap two files in the Linux file system.
When we talk about swapping two files on a Linux operating system, we don't mean swapping/exchanging the location of these two files, but rather their actual content. In this article, we will understand how to swap two files in Linux command line.
Consider the existence of the following files in a Linux operating system environment to better understand the goal of this tutorial.
Create two files f1.txt and f2.txt.
File f1.txt has the following contents
Hi Welcome in Linux
File f2.txt has the following contents
Hi Welocome in Linux shell scripting [sachin@lmdesk swapping]$ vim f1.txt [sachin@lmdesk swapping]$ vim f2.txt [sachin@lmdesk swapping]$ cat f1.txt Hi Welcome in Linux! [sachin@lmdesk swapping]$ cat f2.txt Hi Welcome in Linux shell scripting
If we successfully swap these two files
File f1.txt will read − Hi Welocome in Linux shell scripting
File f2.txt will read − Hi Welcome in Linux
Swapping contents of two files by using mv command
The mv command can be used to rename files and can also be used to move them from one location to another. Here the purpose is to swap two files in the command line, so we using mv command for renaming purposes, not for moving files to other locations.
Exchanging values between variables is a common requirement in programming and scripting jobs. When we want to exchange the values of two variables, in most programming languages, the best approach is to use a temp variable. Examine the following demonstration
temp = x x = y y = temp
Lets implement this algorithm with mv command, mv command will be modified like this
mv f1.txt test.txt mv f2.txt f1.txt mv test.txt f2.txt
The output of these command will swap two files.
Swapping contents of two files by using shell script
if (( $# == 2)) ; then TMPFILE=$(mktemp $(dirname "$1")/function.txt) mv "$1" $TMPFILE && mv "$2" "$1" && mv $TMPFILE "$2" else echo "Error: Two valid file paths required" return 1 fi
Let us understand above shell script. $# is the number of arguments to shell script, so first line of script with if statement validating if the argument to shell script is 2 then and only then exchange contents. TMPFILE is a variable holding path of file which hold content temporarily in the process of content exchange, mv command we discussed earlier and here we using same for renaming purpose. If two files are not passed to this script, then error will get generated
We can simply pass the two files to swap as arguments. The function will handle everything else. Bash's auto-completion will come in handy here.
Conclusion
In this article, we learned how to swap the contents of two files using three mv commands. We've also written a shell script to make it easier to carry out this operation. You can either use the command execution approach or can use shell script approach.
- Related Articles
- How to compare two sorted files line by line in the Linux system?
- How to compare the files available in two directories using diff command in Linux?
- How to Clear BASH Command Line History in Linux?
- Convert XLSX to CSV in Linux with Command Line in Linux
- How to Download and Extract Tar Files with One Command in Linux
- Evaluate XPath in the Linux Command Line
- How to compare two different files line by line in Python?
- Best Command Line HTTP Client for Linux
- How to remove swap files using Python?
- Swap two variables in one line in Java
- How to remove sections from each line of files in the Linux system?\n
- Swap two variables in one line using C#
- How to use diff Command in Linux
- Find my public ip address from linux command line
- Compare Two Different Files Line by Line in Java
