Другие пользователи дали ответы на Python. Если по какой-либо причине вы хотите сделать это с помощью утилит Unix, я думаю, вы можете просто пойти на:
randomFileName=`echo $yourString | sed 's/^\(.*\.txt\):.*/\1/'`
Это просто операция замены sed.
Бит в экранированных скобках просто соответствует любому набору символов, который заканчивается на .txt, и сохраняет его в буфере. Следующий бит соответствует двоеточию и любому тексту после него. ^
означает совпадение с начала $yourString
.
Затем \1
заменяет все, что ему соответствует, на то, что находится в первом буфере паттернов. В этом случае это должно быть ваше произвольное имя файла.