How can I specify a shell pattern that excludes certain files?
For instance, I want to remove all the files in a directory except for the .tar
file from whence they came. I could do something like:
find . -maxdepth 0 | grep -v '.tar$' | xargs rm -f
but is there a way to do is just using rm and shell pattern matching? Feel free to specify it using bash
or other commonly available shells, or with extended options, if it can't be done with vanilla sh
.
I found a similar question about avoiding directories and subdirectories with find, but not with shell patterns.
You can do it with extended globbing.
shopt -s extglob
then
rm !(file.tar)
This works in bash 3.2.39 at a minimum