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
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 ~/.??*
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:
- . – The current directory indicated by a single dot.
- .. – The parent directory indicated by two successive dots.
Let us try out:cd /tmp/
mkdir demo
cd demo
mkdir app
>.config
>.vimrc
>.bashrc
ls -a | egrep '^\.'
ls
rm .vimrc
ls -a | egrep '^\.'
rm -rfv /tmp/demo/.*
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:
- Unix and Linux: Redirect Error Output To null Command
- BASH Shell Redirect Output and Errors To /dev/null
- /dev/null discards unwanted output
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 |
See
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.
An interesting footnote is that some files may have problematic names like files starting with a ‘-’ (minus symbol) and one can use ‘–’ as take everything from here as argument like this (from the manpages)
To remove a file whose name starts with a '-', for example '-foo', use one of these commands:
rm -- -foo
rm ./-foo
It’s more common than one expect in daily sysadmin live to deal with these
Conclusion
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.