5 Ways to Empty or Delete a Large File Content in Linux

Occasionally, while dealing with files in Linux terminal, you may want to clear the content of a file without necessarily opening it using any Linux command line editors. How can this be achieved? In this article, we will go through several different ways of emptying file content with the help of some useful commands.

Caution: Before we proceed to looking at the various ways, note that because in Linux everything is a file, you must always make sure that the file(s) you are emptying are not important user or system files. Clearing the content of a critical system or configuration file could lead to a fatal application/system error or failure.

With that said, below are means of clearing file content from the command line.

Important: For the purpose of this article, we’ve used file access.log in the following examples.

1. Empty File Content by Redirecting to Null

A easiest way to empty or blank a file content using shell redirect null (non-existent object) to the file as below:

# > access.log
Empty Large File Using Null Redirect in Linux

Empty Large File Using Null Redirect in Linux

2. Empty File Using ‘true’ Command Redirection

Here we will use a symbol : is a shell built-in command that is essence equivalent to the true command and it can be used as a no-op (no operation).

Another method is to redirect the output of : or true built-in command to the file like so:

# : > access.log
OR 
# true > access.log
Empty Large File Using Linux Commands

Empty Large File Using Linux Commands

3. Empty File Using cat/cp/dd utilities with /dev/null

In Linux, the null device is basically utilized for discarding of unwanted output streams of a process, or else as a suitable empty file for input streams. This is normally done by redirection mechanism.

And the /dev/null device file is therefore a special file that writes-off (removes) any input sent to it or its output is same as that of an empty file.

Additionally, you can empty contents of a file by redirecting output of /dev/null to it (file) as input using cat command:

# cat /dev/null > access.log
Empty File Using cat Command

Empty File Using cat Command

Next, we will use cp command to blank a file content as shown.

# cp /dev/null access.log
Empty File Content Using cp Command

Empty File Content Using cp Command

In the following command, if means the input file and of refers to the output file.

# dd if=/dev/null of=access.log
Empty File Content Using dd Command

Empty File Content Using dd Command

4. Empty File Using echo Command

Here, you can use an echo command with an empty string and redirect it to the file as follows:

# echo "" > access.log
OR
# echo > access.log
Empty File Using echo Command

Empty File Using echo Command

Note: You should keep in mind that an empty string is not the same as null. A string is already an object much as it may be empty while null simply means non-existence of an object.

For this reason, when you redirect the out of the echo command above into the file, and view the file contents using the cat command, is prints an empty line (empty string).

To send a null output to the file, use the flag -n which tells echo to not output the trailing newline that leads to the empty line produced in the previous command.

# echo -n "" > access.log
Empty File Using Null Redirect

Empty File Using Null Redirect

5. Empty File Using truncate Command

The truncate command helps to shrink or extend the size of a file to a defined size.

You can employ it with the -s option that specifies the file size. To empty a file content, use a size of 0 (zero) as in the next command:

# truncate -s 0 access.log
Truncate File Content in Linux

Truncate File Content in Linux

That’s it for now, in this article we have covered multiple methods of clearing or emptying file content using simple command line utilities and shell redirection mechanism.

These are not probably the only available practical ways of doing this, so you can also tell us about any other methods not mentioned in this guide via the feedback section below.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Aaron Kili

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

11 Responses

  1. Shujauddin Qureshi says:

    Dears, I have a log file in which I have 3 months’ logs how can I just keep the last 30 days log and rest to be deleted. Ho to do this?

    How to specify this condition if log file size grows 2GB then clear one-month-old data..

  2. Happy says:

    How to remove the content (files & directories) in the same folder at one time.

    # cp /dev/null /filefolder/Many files.
    # echo '' ' < filefolder/many files.
    

    Problem is file automatically create or delete (Dynamic file are creating)

  3. lokiyo says:

    I know > and :> are methods that empty the file without actually “touching” it, if the file is being used.

    Are the other methods working the same way? We always get tickets for large files and 80% of the time, we need to compress the contents of the file and truncate or “zero” it but with the problem that the file is being used and we can’t stop the process using it.

    At the moment, I only used the redirect methods I mentioned at the start of my post.

    • Ravi Saive says:

      @Lokiyo,

      All know that > and :> are standard options to empty the large file content without being touching it. But there are other methods works same way as show in this article, I think you should give a try and see..

  4. James Merrill says:

    When I opened this link I was expecting ways to actually get rid of the file contents on the disk. All of these methods only unlink the disk space from the file, leaving the contents on the drive.
    Of the choices listed, though, I think “truncate -s 0 ” is the best option.

  5. Mike says:

    Another simple option utilizing the cat command:
    cat > /path/to/file
    Then hit Ctrl+D
    Voila, empty file.

  6. Bruno DARCET says:

    every trick using redirection “>” are the same !

    >file
    : >file
    true >file
    cat /dev/null >file
    my_prog >file (if my_prog produce no output)

    because the shell truncate (or create) “file” before launching the command (cat, true, …), the most important is that the command produces no output !!!

    you can understand that >file is the best one because it needs no other program !

    • Aaron Kili says:

      @Bruno

      It is true, the basic idea is the use of the redirection mechanism. We are simply offering various alternatives that a user can choose to use, though they are more like the same.

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.