Linux / Unix: Find All Hidden Dot Directories and Delete

I need to clean up my backups stored on the nas server. I need to free up the disk space. How do I find out all hidden dot directories such as /nas01/backups/home/user/.gnome/, /nas01/backups/home/user/.gnome/ and so on and delete then in a single pass using Linux or Unix command line option? Please note that I do not want to delete nested hidden directories such as /nas01/backups/home/user/data/.xml, /nas01/backups/home/user/foo/bar/.level/.levle2/ and so on.

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Requirementsfind
TimeN/A
You can use the find command to find or locate files on a Linux or Unix system. The search is recursive in that it will search all subdirectories too. The syntax is:

ADVERTISEMENTS

find /path/to/search criteria action

Here’s an example find command using a search criterion and the default print action:

find /nas01/backups/home/user/ -name file-Name-here

To match only directories, use:

find /nas01/backups/home/user/ -type d -name file-Name-here -print0

To match only hidden dot directories, enter:
find /nas01/backups/home/user/ -type d -name ".*" -print0

To descend at most one levels of directories below the command line arguments pass the -maxdepth 1 option. This will avoid deleting nested directories:

find /nas01/backups/home/user/ -maxdepth 1 -type d -name ".*" -print0

Once satisfied with the result, use the xargs command to delete all hidden directories:

find .  -maxdepth 1 -type d -iname ".[^.]*" -print0 | xargs -I {} -0 rm -rvf "{}"

OR

find .  -maxdepth 1 -type d -iname ".*" -print0 | xargs -I {} -0 rm -rvf "{}"
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNCentOS 8 Debian 10 Firewall Ubuntu 20.04

ADVERTISEMENTS
4 comments… add one
  • nick May 5, 2013 @ 20:03

    Won’t this, without maxdepth also delete directories higher than the specified (.* matches “..”)?

  • Casper May 5, 2013 @ 20:05

    Why not use -exec:

    find . -maxdepth 1 -type d -iname “.[^.]*” -exec rm -rvf “{}” \;

  • a reader May 5, 2013 @ 20:27

    why not use -delete:

    find -maxdepth 1 -type d -name “.[^.]*” -deletewe have got crammed

  • Saenthan Jul 5, 2013 @ 6:14

    ls -al

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.