Linux / UNIX: Bash Find And Delete All Hidden Files Directories

by on November 9, 2009 · 3 comments· LAST UPDATED November 9, 2010

in , ,

How can I find all all hidden files and directories (starting with . character) under UNIX or Linux and delete them using bash or ksh shell?

Use the following command to list all hidden files in /path/to/dest/ directory
$ find /path/to/dest/ -iname ".*" -maxdepth 1 -type f
To list all hidden directories use the following command:
$ find /path/to/dest/ -iname ".*" -maxdepth 1 -type d
To delete all hidden files under UNIX or Linux use the following command:
$ find /path/to/dest/ -iname ".*" -maxdepth 1 -type f -delete
$ find /path/to/dest/ -iname ".*" -maxdepth 1 -type f -exec rm {} \;
To delete all hidden directories under UNIX or Linux use the following command:
$ find /path/to/dest/ -iname ".*" -maxdepth 1 -type d -exec rm -rf {} \;
If you removed -maxdepth 1 it will find all subdirectories and remove them too.

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 3 comments… read them below or add one }

1 Srivignesh April 18, 2012 at 2:47 pm

find /path/to/dest/ -iname “.*” -maxdepth 1 -type f -exec rm {} \;
worked for me… Thanks


2 erik February 27, 2013 at 4:51 am

this can be very dangerous,
when the /path/to/dest/ is . -iname “.*” will match .
which is probably not what you want.
(with the -exec rm -rf {} \; it could be very very bad)
i tend to use -name “.[^.]*” or -path “*/.*”
depending on whether or not I want to match the contents of the hidden directories.


3 Anup May 31, 2013 at 8:01 am

Command : find /path/to/dest/ -iname “.*” -maxdepth 1 -type f gives me below error :
you have specified the -maxdepth option after a non-option argument -iname, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it)

Use maxdepth option before -iname
$ find /path/to/dest/ -maxdepth 1 -iname “.*” -type f


Leave a Comment

Tagged as: , , , , , , , , , ,

Previous Faq:

Next Faq: