Isso pode ser feito como um verso da seguinte maneira:
find "/path/to/FolderA" -type f -name "*iso" -exec ln -s {} /path/to/symlinkfiles \;
Para transformar isso em um script
#!/bin/bash
SOURCEFILES="/path/to/folderA"
FLATTENEDFILEDIR="/path/to/folderB"
find "$SOURCEFILES" -type f -name "*.iso -exec ln -s {} $FLATTENEDFILEDIR \;
Estes funcionam da seguinte forma - o comando find procura por arquivos em um determinado local, o "tipo f" significa que ele procura apenas por arquivos, então symlinks e subdiretórios não são executados (mas os diretórios são procurados por arquivos), o * .iso espera que seja a extensão do arquivo.
A segunda parte (após -exec) é executada para cada arquivo e cria o symlink.
Você pode querer colocar algo como "rm -r $ FLATTENEDFILESDIR / *" no topo deste script, se for permitido remover links simbólicos existentes, para que você não tenha os mortos - MAS É VITAL VOCÊ DEFINIRAM FLATTENEDFILESDIR corretamente primeiro, pois a falha em fazer isso pode limpar a maior parte do seu sistema!