find and remove files bigger than a specific size and type
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
- the
\( \)
construct allows to group different filename patterns - by using
-delete
option, we can avoid piping and troubles withxargs
See this, this and this ./
or.
is optional when usingfind
command for current directory
Edit: As Eric Renouf notes, if your version of find
doesn't support the -delete
option, use the -exec
option
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +
where all the files filtered by find
command is passed to rm
command
If you want to exclude files by name, you can use this syntax:
find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete
or if your find
does not support delete
:
find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;