or "How to handle prefixed folder names?"
Inside a folder I have two (or more) foo_*
folders
foo_0
foo_1
What I'm trying to achieve is to
- perform an action if there's 1 or more
foo_*
folders - Use a wildcard
*
Currently I'm doing it this way (going directly to check if directory foo_0
exists):
prefix=foo_
if [ -d "./${prefix}0/" ]; then
printf "foo_0 folder found!"
# delete all foo_* folders
fi
Having directories 0
-to-N
so the above works, but i'm not sure I'll always have a foo_0
folder...
I'd like to do use a wildcard:
prefix=foo_
if [ -d "./${prefix}*/" ]; then # By using wildcard...
printf "One or more foo_* folders found!" # this never prints
# delete all foo_* folders
fi
I've read that a wildcard *
inside quotes loses its powers, but placing it outside quotes throws :
if [ -d "./${prefix}"* ] <<< ERROR: binary operator expected
Or is it possible to use some sort of regex like? ./foo_\d+
?
The only solution I don't (arguably) like, is by using set
set -- foo_*
if [ -d $1 ]; then
printf "foo_* found!"
fi
but it wipes program arguments.
Is there any other nice solution to this I'm missing?