замените "." [точки], но оставьте последнюю: например: .txt [там мог быть случайным числом точек в строке, даже обнулить, мне просто нужен последний]
$ повторяют 'someth.ing.something.txt' | SOMEMAGIC
someth-ing-something.txt
$
Дайте этому попытку:
echo 'someth.ing.something.txt' | sed 's/\(.*\)\.\([^.]*\)$/\1\n\2/;s/\./-/g;s/\n/./g'
Я уверен, что существует лучший (regex) путь, но Вы могли записать сценарий (python/perl), который берет чтения от stdin и находит последнюю точку, разделяет его на имя файла + расширение, и затем замените все точки тире в имени файла.
В конце связывают его и выкладывают его снова.