Bash script - move files to matching folders

Hi,
I apologize in advance for the long explanation. I am fairly new at coding.
Any suggestion would be greatly appreciated.

I have the intention to organize the folders from

parent
|-- out
	|-- 1.Amber
	|   |-- seed-1_clean.e1.log
	|   |-- seed-1_clean.e2.log
	|   |-- seed-1_test.idx
	|   |-- seed-2_clean.e1.log
	|   |-- seed-2_clean.e2.log
	|   `-- seed-2_test.idx
	|-- 2.Dragon
	|   |-- seed-1.ppt
	|   `-- seed-2.ppt
	|-- 3.Chris
	|   |-- seed-1.tar.gz
	    `-- seed-2.tar.gz

to something like this

parent
|-- seed-1
	|-- 1.Amber
	|   |-- seed-1_clean.e1.log
	|   |-- seed-1_clean.e2.log
	|   `-- seed-1_test.idx
	|-- 2.Dragon
	|   `-- seed-1.ppt
	|-- 3.Chris
	|   `-- seed-1.tar.gz
|-- seed-2
	|-- 1.Amber
	|   |-- seed-2_clean.e1.log
	|   |-- seed-2_clean.e2.log
	|   `-- seed-2_test.idx
	|-- 2.Dragon
	|   `-- seed-2.ppt
	|-- 3.Chris
 	    `-- seed-2.tar.gz

I got it to work with the following code

#!/usr/bin/env bash

aa='1.Amber'
bb='2.Dragon'
cc='3.Chris'

for s in out/"$aa"/*_c*; do
	sn=${s%%_*}
	sn=${sn##*/}
	echo "$sn"
	mkdir -p "${sn}"/"$aa"
	mkdir -p "${sn}"/"$bb"
	mkdir -p "${sn}"/"$cc"
	
	for i in out/"$aa"/*; do
		if grep -q "$sn" <<< "$i"; then
			mv "$i" "$sn"/"$aa"/.
	for i2 in out/"$bb"/*; do
		if grep -q "$sn" <<< "$i2"; then
			mv "$i2" "$sn"/"$bb"/.
	for i3 in out/"$cc"/*; do
		if grep -q "$sn" <<< "$i3"; then
			mv "$i3" "$sn"/"$cc"/.
		fi
	done
		fi
	done
		fi
	done
done

However, if I have more files to organize, it would become very long and tedious.
Is there a way that I could shorten this?

Also, for the echo "$sn" part, I got repeated output of seed-1 and seed-2. I'm guessing it's because I have 2 similar files (_clean.e1.log, _clean.e2.log). How do I make it so the same file name only echo once?

Please help
Thanks so much

--- Post updated at 01:43 PM ---

In addition, I've tried

for s in out/"$aa"/*_c*; do
	sn=${s%%_*}
	sn=${sn##*/}
	echo "$sn"
	mkdir -p "${sn}"/{"$aa", "$bb", "$cc"}
done

It came out like this

parent
|-- 2.Dragon,
|-- 3.Chris}
|-- seed-1
	|-- {1.Amber,
|-- seed-2
	|-- {1.Amber,
1 Like

You may want to try this:

cd out
ls -1 */* | 
while IFS="/_" read _ PRFX _
  do    echo "${PRFX%%.*}"
  done | 
sort -u |
while   read DN
  do    echo mkdir "$DN"
        ls */"$DN"* |
        while   read FN
          do    echo cp "$FN" "$DN/$FN"
          done
  done
mkdir seed-1
cp 1.Amber/seed-1_clean.e1.log seed-1/1.Amber/seed-1_clean.e1.log
cp 1.Amber/seed-1_clean.e2.log seed-1/1.Amber/seed-1_clean.e2.log
cp 1.Amber/seed-1_test.idx seed-1/1.Amber/seed-1_test.idx
cp 2.Dragon/seed-1.ppt seed-1/2.Dragon/seed-1.ppt
cp 3.Chris/seed-1.tar.gz seed-1/3.Chris/seed-1.tar.gz
mkdir seed-2
cp 1.Amber/seed-2_clean.e1.log seed-2/1.Amber/seed-2_clean.e1.log
cp 1.Amber/seed-2_clean.e2.log seed-2/1.Amber/seed-2_clean.e2.log
cp 1.Amber/seed-2_test.idx seed-2/1.Amber/seed-2_test.idx
cp 2.Dragon/seed-2.ppt seed-2/2.Dragon/seed-2.ppt
cp 3.Chris/seed-2.tar.gz seed-2/3.Chris/seed-2.tar.gz

Remove the last two echo es if happy with what you see.