Propongo usar sed para hacer eso:
NEW=$(echo MyDirectoryFileLine \
| sed 's/\(.\)\([A-Z]\)/\1-\2/g' \
| tr '[:upper:]' '[:lower:]')
UPD Olvidé convertir a minúsculas, código actualizado
Puedes usar s/\([A-Z]\)/-\L\1/g
para encontrar una letra mayúscula y reemplazarla con un guión y su minúscula. Sin embargo, esto le da un guión al comienzo de la línea, por lo que necesita otra expresión sed para manejar eso.
Esto debería funcionar:
sed --expression 's/\([A-Z]\)/-\L\1/g' \
--expression 's/^-//' \
<<< "MyDirectoryFileLine"