Navrhuji k tomu použít sed:
NEW=$(echo MyDirectoryFileLine \
| sed 's/\(.\)\([A-Z]\)/\1-\2/g' \
| tr '[:upper:]' '[:lower:]')
UPD Zapomněl jsem převést na malá písmena, aktualizovaný kód
Můžete použít s/\([A-Z]\)/-\L\1/g
najít velké písmeno a nahradit ho pomlčkou a je to malá písmena. Tím však získáte na začátku řádku pomlčku, takže k tomu potřebujete další výraz sed.
Mělo by to fungovat:
sed --expression 's/\([A-Z]\)/-\L\1/g' \
--expression 's/^-//' \
<<< "MyDirectoryFileLine"