You’ll find yourself in situations where you need to empty a file. This often happens when you have huge log files and How would you do that?
One not so clean way would be to remove the file and then create a new file. But this is not a good idea. It won’t be the same file, the timestamp (atime, mtime etc) will be different along with other file permissions.
Instead of creating a new empty file, you can delete its content. So, how do you empty a file in Linux? How to clear a file from all of its content without deleting the actual file?
4 ways to empty a file in Linux
There are several ways you can empty a file without actually deleting the file. Let me show you some of these methods.
Method 1: Truncate a file using truncate command
The safest way to truncate a log file is using the truncate command.
truncate -s 0 filename
In the above command, -s is used to set/adjust the size (in bytes) of the file. When you use -s 0, it means you adjusted the file size to 0 bytes. In
Method 2: Empty file using :> or >
The simplest way to empty a file is to use the command below. If the file is not in use, it will work in Bash:
While the above works only in Bash Shell, you can use a similar command for other shells:
You can also use this command to clear a file:
true > filename
Method 3: Using echo command to empty file in Linux
Another way to empty a file is via echo command in Linux:
echo > filename
You can also use echo command in this way:
echo "" > filename
Method 4: Use /dev/null to clear a file
You can also use the famous /dev/null and combine with the cat command to clear a log file:
cat /dev/null > file.log
In the end…
And if you don’t have enough permissions for any of the above commands, this is the sure shot but a little dirty way to achieve it:
touch newfile mv newfile filename
You can also empty a file by deleting all lines in Vim editor.