How can I recursively delete all files of a specific extension in the current directory?
How do I safely delete all files with a specific extension (e.g. .bak
) from current directory and all subfolders using one command-line? Simply, I'm afraid to use rm
since I used it wrong once and now I need advice.
Solution 1:
You don't even need to use rm
in this case if you are afraid. Use find
:
find . -name "*.bak" -type f -delete
But use it with precaution. Run first:
find . -name "*.bak" -type f
to see exactly which files you will remove.
Also, make sure that -delete
is the last argument in your command. If you put it before the -name *.bak argument
, it will delete everything.
See man find
and man rm
for more info and see also this related question on SE:
- How do I remove all .pyc files from a project?
Solution 2:
find . -name "*.bak" -type f -print0 | xargs -0 /bin/rm -f