How to Delete All Files Except Directories
Case
I want to delete all files inside the $ROOT
of working directory
except
directories themselves.
I faced this challange when I started a new GoHugo project and wanted to
iterate/play around typical exampleSite
content.
Example content for a new GoHugo project:
user@host:~$ ls -la
total 52K
-rw-r--r-- 1 user user 1.3K Jul 9 17:44 .
-rw-r--r-- 1 user user 1.3K Jul 9 17:44 ..
-rw-r--r-- 1 user user 1.3K Jul 9 17:44 config.toml
drwxr-xr-x 3 user user 4.0K Jul 9 17:44 content
drwxr-xr-x 9 user user 4.0K Jul 9 17:44 .git
-rw-r--r-- 1 user user 20 Jul 9 17:44 .gitignore
-rw-r--r-- 1 user user 160 Jul 9 17:44 .gitmodules
drwxr-xr-x 4 user user 4.0K Jul 9 17:44 layouts
-rw-r--r-- 1 user user 79 Jul 9 17:44 Makefile
drwxr-xr-x 3 user user 4.0K Jul 9 17:44 public
-rw-r--r-- 1 user user 20 Jul 9 17:44 README.md
drwxr-xr-x 3 user user 4.0K Jul 9 17:44 resources
-rw-r--r-- 1 user user 2.2K Jul 9 17:44 Session.vim
drwxr-xr-x 3 user user 4.0K Jul 9 17:44 static
drwxr-xr-x 3 user user 4.0K Jul 9 17:44 themes
Solution
Finding files:
$ find . -type f
To make this only for current dir —$ROOT
, add -maxdepth
flag:
$ find . -maxdepth 1 -type f
Final solution would be:
$ find . -maxdepth 1 -type f -delete
Warning
Make sure you selected right files before using -delete flag. So check more than one the output of find.
Bonus Tip
To exclude a dir from your find
use, -prune
flag. For instance in order to
exclude .git
dir from our searches use one of the below commands:
$ find . -type d -name .git -prune -o -type f -print
$ find . -path ./.git -prune -o -print
All done!
Subscribe
Read Related