У меня есть несколько файлов (около 1000), названных так:
abcdefg123456.xyz
abcdefg123457.xyz
abcdefg123458.xyz
abcdefg123459.xyz
Некоторые из файлов имеют 4 дополнительных случайных числа и буквы (в любом порядке) после имени. Возможно, это дубликаты, но не всегда, поэтому мне нужно изменить их на исходный формат, чтобы проверить, являются ли они дубликатами или нет. У них есть этот формат:
abcdefg123456a789.xyz
abcdefg123457b987.xyz
abcdefg123458c879.xyz
abcdefg123459d897.xyz
Иногда есть неправильное расширение,
abcdefg123456.xyzedf
abcdefg123456.xyzfed
Я хочу переименовать эти файлы в исходный формат abcdefg, за которым следуют исходные 6 чисел, то есть удалить последние 4 случайных числа и буквы и удалить конечное расширение назад .xyz. То, что у меня есть, так это:
rename -n "s/[a-z][0-9]{6}.xyz/.xyz/g" *
Но это не похоже на работу. По какой-то причине вывод:
abcdef.xyz (no numbers)
РЕДАКТИРОВАТЬ: Я был немного разрывается между тем, какой ответ выбрать, потому что оба помогли найти решение. Я пошел на трюки, потому что он помог со второй частью вопроса. Но ваша помощь очень ценится и Марком Перриманом - и, конечно, комментаторами.