How do I remove all *.foo in a directory tree?
rm -r *.foo
does not work.
I could try a loop, but that needs recursive expansion:
for x in */*/.../*.foo
do rm $x
done
Which is not possible either.
How do I remove all *.foo in a directory tree?
rm -r *.foo
does not work.
I could try a loop, but that needs recursive expansion:
for x in */*/.../*.foo
do rm $x
done
Which is not possible either.
Assuming you have a fairly recent version of bash:
shopt -s globstar
rm -- **/*.foo
One of the easiest solutions would be to use the find command with the exec parameter:
find /path/where/to/start/search -type f -name "*.foo" -exec rm {} \;
This will look for all files named *.foo and perform rm {filename} for each one.
If you have lots of files, use of the xargs command may be faster:
find /path/where/to/start/search -type f -name "*.foo" | xargs rm
This will find all files, and will put the file names behind the rm command up until the max length of a command your distro/shell will support, so when run it'll to this:
rm dir1/file1.foo dir1/file2.foo dir1/file3.foo
As you can imagine now the rm binary needs to be started much less, making this a faster option.