script shell pour créer des directorys, des sous-directorys et des files suivant un model

Est-il possible de créer un script qui créera la structure suivante après l'avoir exécutée:

/test/1/1 -> A /test/1/2 -> B /test/1/3 -> C /test/1/4 -> D /test/1/5 -> E /test/1/6 -> F /test/1/7 -> G /test/1/8 -> H /test/1/9 -> I /test/1/10 -> J /test/1/11 -> K /test/1/12 -> L /test/1/13 -> M /test/1/14 -> N /test/1/15 -> O /test/2/1 -> P /test/2/2 -> Q /test/2/3 -> R /test/2/4 -> S /test/2/5 -> T /test/2/6 -> U /test/2/7 -> V /test/2/8 -> X /test/2/9 -> Y /test/2/10 -> Z /test/2/11 -> A /test/2/12 -> B /test/2/13 -> C /test/2/14 -> D /test/2/15 -> E /test/3/1 -> F /test/3/2 -> G /test/3/3 -> H ......... /test/10/15 -> ??? 

Comme vous pouvez le voir, dans cet exemple, le directory "test" est le directory parent et les numéros sont des sous-directorys. Les lettres sont des files, pas des dossiers. À chaque fois que l'alphabet se termine, il commencera dans le directory suivant.

Comment puis-je créer un script qui rendra cela plus facile plutôt que de simplement les créer manuellement?

Avec zsh :

 dirs=(test/{1..10}/{1..15}) n=0 mkdir -p $dirs && for d ($dirs) {:>$d/$(([##36]n%26+10)); ((n++))} 

L'astuce ci-dessus est d'utiliser des numéros de base36 où les numbers 10 à 35 sont exprimés avec A .. Z Serait un peu plus lisible et généralisable avec:

 dirs=(test/{1..10}/{1..15}) n=0 l=({A..Z}) mkdir -p $dirs && for d ($dirs) : > $d/$l[1 + n++ % $#l] 
 echo /test/{1..10}/{1..15} " " | ( chars=({A..Z}); i=0; while read -d " " dir; do test -z "$dir" && break; echo mkdir -p "$dir"; echo touch "${dir}/${chars[i]}"; ((i++)); i=$((i%26)); done )