Я реализовал это оператором if
с проверкой кода ошибки. Операция [ -d ...]
сгенерирует ошибку, если при взрыве шаблона будет передано более одного параметра (имени папки) или , если файлов не существует. ls
в или
позволяет узнать, какой случай привел нас сюда (если существует несколько папок, то код возврата будет 0
)
if [ -d ${ID}* ] 2>/dev/null; then
echo "Folder exists and is unique"
else
ls ${ID}* >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "No folder exists starting with ${ID}"
else
echo "More than one folder starting with ${ID}"
fi
fi