Akshat is a software engineer, product designer and the co-founder of Scrutify. He's an experienced Linux professional and the senior editor of this blog. He...Read more
To concatenate files in Linux, you can use these three popular command-line tools:
catcommand to combine or view files in a vertical sequence by running
cat file1 file2 > newfilein the Linux command prompt.
pastecommand to merge the contents of multiple files horizontally with
paste file1 file2.
joincommand to combine two files based on a common field, allowing for the creation of a merged output file with matching data from both input files using
join -t, -1 1 -2 1 file1 file2 > output.
To avoid issues, follow the best practices like selecting the correct format, validating input, and backing up files. Moreover, you should double-check file names, paths, permissions, and format compatibility to resolve and avoid experiencing common errors when using these command line tools.
Check out the comprehensive guide below to learn more about how to concatenate files in Linux.
Concatenation is useful for merging logs, CSVs, creating reports or data files, and other related activities. That is, it lets you combine multiple files into a single one. There are two types: vertical (appending) and horizontal (side-by-side). It involves reading and appending/inserting content into a new or existing file.
In this article, I’ll discuss both types of concatenation commands that you can use based on your needs. Furthermore, you’ll also learn the five best practices to concatenate files in Linux and four troubleshooting tips to fix common concatenation errors.
How to Concatenate Files in Linux [3 Simple Ways]
To concatenate files in Linux, there are three primary commands:
cat for vertical concatenation,
paste for horizontal concatenation, and
join for concatenation based on a common field. In the following sections, I will examine each of these methods in more detail to help you better understand how to use them:
1. cat Command
cat command is the most commonly used command for vertical concatenation. That is, it adds the contents of the first file to the end of the second file. The output file contains all the content of both files, one after the other. Here’s how to use it:
- Create two files using gedit or any other text editor in Linux. Then, copy-paste the content below:
This text is from file 1.
This text is from file 2.
- Now, lunch the Terminal app and run the following command to concatenate these two files:
cat file1 file2 > newfile
- This command concatenates file1 and file2 into a new file called newfile. The
>symbol redirects the output of the
catcommand to a new file.
2. paste Command
paste command is used for horizontal concatenation. This type of concatenation adds the contents of one file to the side of the other file. The output file would contain the content of both files in a single row. Here is an example of two files that you could use to understand this command:
- Create these files in a text editor to concatenate them using the
apple banana orange
red yellow orange
- After that, execute the command below in the Terminal app to concatenate these two files:
paste file1 file2
- When you use the
pastecommand with these two files, it will combine the lines from both files and separate them by a delimiter, which is a
tabby default. Here’s the output you would get:
3. join Command
join command is used to concatenate files in Linux that have a common field. I’ll create sample text files (file1 and file2) to demonstrate how this command works. Here are the steps to follow:
- Create file1 and file2 with the following text:
Employee Name, Department John Doe, Sales Jane Smith, Marketing Bob Johnson, HR
Employee Name, Salary John Doe, 70000 Jane Smith, 90000 Bob Johnson, 60000
- To join these two files based on the employee name field, you can use the following command in the Terminal app:
join -t, -1 1 -2 1 file1 file2 > output
- This command uses the
-toption to specify that the delimiter between fields is a comma and the
-2options to specify that the join should be based on the first field in both files (which is the employee name field in this case).
- The resulting file, output.txt, will contain the concatenated data from both files based on the common field of Gender. It will include columns for Name, Age, Occupation, and Salary, with rows for each individual that appears in both files with the same gender.
5 Best Practices to Concatenate Files in Linux
Now that I’ve covered the most popular command-line tools for concatenating files in Linux, let’s discuss the five best practices to follow when using these tools. Here’s the breakdown:
- 📄 Use the correct file format: Ensure that all files being concatenated have the same format. Otherwise, you may experience issues with file encoding and formatting.
- 💾 Backup your files: Before concatenating files, it’s always a good idea to create a backup of your original files. This way, you can restore your files if any issues arise during the concatenation process. Use the
cpcommand to create a backup copy of your files.
- 🔑 Check file permissions: Make sure that you have the necessary permissions to access and modify the files being concatenated. Otherwise, you may encounter errors during the concatenation process. Use the
chmodcommand to adjust file permissions if needed.
- ✅ Validate input: Prior to concatenating files on Linux, ensure that the input is valid and free from any errors. This will help to prevent any issues with the concatenated file. You can use tools like
awkto filter and validate input data.
- 🧹 Clean up files after concatenation: Once you’ve concatenated your files, make sure to clean up any temporary files or backups created during the process. This will help to keep your file system organized and avoid clutter. Use the
rmcommand to remove unnecessary files after the concatenation process is complete.
4 Troubleshooting Tips When Concatenating Files in Linux
When concatenating files in Linux, you may encounter some common errors. Here are some troubleshooting tips to help you resolve them:
- 📁 “No such file or directory” error: This error occurs when the file being concatenated doesn’t exist in the specified directory. Double-check the file name and directory path to ensure they are correct. Use the
lscommand to verify the file’s existence in the directory.
- 🔒 “Permission denied” error: If you encounter a “Permission denied” error while concatenating files, it means that you do not have the necessary permissions to access or modify them. Ensure that you have the necessary permissions before you begin to concatenate files in Linux. You can use the
chmodcommand to modify the file permissions.
- ❌ “Invalid delimiter” error: You may experience this error when the files being concatenated have different delimiters. Convert the files to a common delimiter format before concatenating them. You can use tools like awk, sed, or tr to replace the delimiters in the files.
- ⚠️ “File format not supported” error: If you encounter an error indicating that the files being concatenated are not supported, it means that they are not in a compatible format. To avoid this issue, make sure that all the files being concatenated are in a format that is supported. You can use tools like iconv or dos2unix to convert file formats if necessary.
Concatenating files in Linux is a useful technique for combining multiple files into a single file. Whether you’re merging log files, creating a single report from several text files, or combining multiple CSV files into a single file, concatenation can save you lots of time and effort.
Besides concatenating files in Linux, there are several other valuable techniques and concepts worth exploring to improve your key skills. Such as the grep command with OR condition for searching and replacing text in files, mastering the help command to learn more about Linux tools, and scripting in Bash to debug the code efficiently.
Frequently Asked Questions
What are the limitations of file concatenation?
The main limitation of file concatenation is that it only involves combining two or more files into a single file. It has compatibility issues, file size limitations, loss of metadata, the potential for corrupt files, and file format limitations. Concatenating files from unknown or untrusted sources may even pose a security risk, and the process can be time-consuming, particularly for large files or multiple files.
How do I concatenate files in Linux and maintain the original line breaks?
To concatenate files in Linux while preserving the original line breaks, you can use the cat command along with the
-s option, which replaces multiple blank lines with a single blank line. By default, the cat command removes blank lines between files when concatenating them, but the
-s option preserves them. To concatenate two text files named “file1.txt” and “file2.txt” while preserving their original line breaks, use the command
cat -s file1.txt file2.txt > combined.txt. This command will combine the contents of the two files while maintaining their original line breaks and write them into a new file called combined.txt. The
-s option can also be used to remove blank lines from a single file by specifying the file name after the
How can I concatenate files in Linux while excluding duplicate lines?
The command “
sort -u file1 file2 > newfile” will concatenate the contents of “file1” and “file2” and sort the combined content alphabetically, removing any duplicate lines. The resulting sorted and unique content will then be saved in a new file called “newfile“.
This command is useful when you have multiple files with related information that you want to merge and remove any duplicates. The
-u option ensures that only unique lines are included in the output, which can be helpful in various data processing tasks.
Can I concatenate files in Linux from different directories using the cat command?
Yes, you can use the cat command to concatenate files in Linux from different directories. Simply specify the full path to each file when running the command, and the concatenated output will be saved to a new file. Your command should look like this:
cat /home/user/documents/file1.txt /home/user/downloads/file2.txt > combined.txt
However, ensure that you have the necessary permissions to access the files and directories before concatenating them.