1. Introduction

In this short tutorial, we’re going to learn how to soft-delete files in Linux systems.

When we soft delete a file we just move it to the trash instead of deleting it permanently.

2. Trash Directory

The trash directory in Linux systems is located in a local file system. For a standard user, the path is:

~/.local/share/Trash/

And for a root user, it’s:

/root/.local/share/Trash/

It’s safe to delete the trash directory. It’ll be recreated if needed.

3. How Linux Trash Works

In the trash directory, we can find two other directories. The first is the files directory which contains the actual trashed files. And the second is the info directory which contains a text file with information about the trashed file.

For example, if we trash /home/baeldung/article.txt file we’ll have:

~/.local/share/Trash/files/article.txt
~/.local/share/Trash/info/article.txt.trashinfo

The files/article.txt is the original file. And the info/article.txt.trashinfo contains metadata:

[Trash Info]
Path=/home/baeldung/article.txt
DeletionDate=2020-02-14T12:09:26

The above information is used for example during restoring trashed files.

4. Trashing Files Using gio

The most recommended way to trash a file is to use the gio library. It provides an interface to a virtual file system and gives easy access to both local and remote files with a single consistent API.

gio is a part of GLib project and can be found by default in most Linux distributions. If not we can install it manually:

$ sudo apt-get install libglib2.0-0

To trash a file using gio, we use its trash command followed by the name of a file:

$ gio trash article.txt

After that, we can list files in our trash directory:

$ gio list trash://

list is similar to ls command, so we need to provide a directory that we want to list. In our case the local file system trash is defined as trash://.

As a result, we’ll get the list of all the files in the trashcan. In our case, it’s just one file:

/home/baeldung/article.txt

To empty the trash directory we should use the trash command with an –empty parameter:

$ gio trash --empty

There’s no output if emptying the trash succeeds.

5. Trashing Files Using trash-cli

One of the alternatives to gio is trash-cli.

It’s an open-source project providing a command-line interface into the KDE, GNOME, and XFCE GUI trashcans. By using trash-cli, we can delete and restore items as the way we do in the graphical Trashcan.

First, we should install the trash-cli:

$ sudo apt-get install trash-cli

Now, to trash a file we should use the trash-put command:

$ trash-put article.txt

We can also list the content of the trashcan:

$ trash-list

The output will contain all trashed files with trash date and full path:

2020-02-24 17:19:07 /home/baeldung/article.txt

In addition to gio, the trash-cli can restore already trashed file:

$ trash-restore article.txt

And finally, to empty the trash directory we should use the trash-empty command:

$ trash-empty

Similarly to gio, there will be no output if emptying the trash succeeds.

Note that neither trash-cli nor gio will automatically empty out the trash. But we can do that with autotrash, a separate utility.

6. Conclusion

In this short tutorial we’ve learned how to soft-delete (trash) files in Linux systems.

Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.