How to Delete Files with a Specific Extension in all Subdirectories Recursively
I was trying to recursively delete all my *.css
files recently because I accidentally ran a SASS to CSS compiler, which bloated my repository.
I tried using rm -r
, since I knew the -r
flag recursively traversed the directory tree, but it has no functionality to match regex patterns for files (only directories).
-r
,-R
,--recursive
removes directories and their contents recursively
In order to recursively delete files, we want to use find
.
find . -type f -name '*.css' -delete
We are searching for all files (-type f
) in the current and child directories (find .
) that match the given pattern (*.css
).
Then we’re delete those files (-delete
).
find . -type f -name '*.css' -exec rm {} +
Here, we’re doing the same search, but instead of using -delete
, we’re running -exec rm {} +
.
The curly braces {}
is a placeholder for the file names and paths.
The plus sign +
allows us to handle multiple files simultaneously.