How to remove hidden files in Linux nixCraft

I am a new Linux sysadmin and Ubuntu Linux user. How can I remove hidden files in Linux? How do I delete hidden files in Linux starting with . (dot) character?

Introduction: Linux and Unix like operating system allow users to hide files. By default, all hidden files not listed by the ls command. Any filename begins with a dot (.) becomes a hidden file. For example ~/.bashrc is a hidden file in Linux. Hidden files are often known as a dot file. All dot files used for storing user preferences on Linux. Please note that hidden or dot files are not a security mechanism. They exist to reduced “clutter” of the contents of a directory listing.

How to display hidden / dot files in Linux

One an display hidden files by passing the -a option to the ls command. For example:
ls -a
ls -la
ls -l /path/to/.filename

Linux display hidden files command
You can add a “/” after directory names in Linux:
ls -F
ls -Fa

One can get a reverse listing:
ls -r
ls -ra

To just display dot/hidden files in Linux use any one of the following command along with grep command/egrep command:
ls -a | egrep '^\.'
ls -A | egrep '^\.'
ls -l ~/.[^.]* | less
ls -ld ~/.[^.]*
ls -l ~/.??*
ls -ld ~/.??*

Just display hidden dot files in Linux with ls
See “Linux / Unix: Find And List All Hidden Files Recursively” for more info.

Command to remove hidden files in Linux

To remove hidden files in Linux, try:
rm .file
rm -i /path/to/.fileName
rm -i /path/to/.dirName
rm -rf /path/to/dir/.*

Of course, you can not delete two individual directories:

  1. . – The current directory indicated by a single dot.
  2. .. – The parent directory indicated by two successive dots.

Let us try out:
cd /tmp/
mkdir demo
cd demo
mkdir app
ls -a | egrep '^\.'
rm .vimrc
ls -a | egrep '^\.'
rm -rfv /tmp/demo/.*

Delete or remove hidden files in Linux command

Getting rid of warning message rm: refusing to remove ‘.’ or ‘..’ directory: skipping

Simply add the following 2> /dev/null at the end of the rm command:
rm -rfv /dir/.* 2>/dev/null
rm -rfv /tmp/demo/.* 2>/dev/null

Sample outputs:

removed '/tmp/demo/.bashrc'
removed '/tmp/demo/.vimrc'

/dev/null is nothing but a special file that discards all data written to it. See the following for more info:

How to delete hidden files in Linux

One can use the find command to list or delete hidden files. The syntax is as follows:

## List all hidden dirs in /etc/ ##
find /etc/ -maxdepth 1 -type d -name ".*" ## List all hidden files in /etc/ ##
find /etc/ -maxdepth 1 -type f -name ".*" ## Find all hidden files in /tmp/data/ and delete it ##
find /tmp/data/ -maxdepth 1 -type f -name ".*" -delete ## Find all hidden files in /tmp/data/ (and it's sub-dirs) and delete it ##
find /tmp/data/ -type f -name ".*" -delete


A note about the GNOME desktop environment and hidden files

In GNOME’s file manager, the keyboard shortcut Ctrl+H enables or disables the display of hidden files. CTRL+H act as a toggle button to hide or show hidden dot files in the GNOME.

Gnome Hide or show hidden dot files
Gif.01: Gnome Hide or show hidden dot files using CTRL+H or options menu


This page explains how to remove hidden files in Linux or Unix-like operating systems. Further, it explained how to redirect output to avoid warning message while using the rm command.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.


Posted by Web Monkey