Скрипт или команда на bash - переименовать файлы по маске

программирование Linux unix bash

Ещё один вопрос. В каталоге есть куча файлов с названиями типа 45345-fgd-7867-xyz.ext.ext2

Нужно переименовать их всех к виду xyz.ext.ext2 , то есть обрезать всё, что находится левее самого левого знака перед самым правым тире )). Наверное нужно использовать регулярки, но именно сейчас абсолютно нет времени вникать в них глубоко и осмысленно. Подскажите, пожалуйста нужную команду. С удовольствием отдам 99 баллов ;)

Примечание:
Дополнение - xyz ext и ext2 - НЕ фиксированных размеров - могут быть разной длинны (от 1 до 100) - а вот точки между ними есть всегда. Все что левее x может быть любым набором букв и чисел, но перед x всегда есть тире.

Примечание:
Похоже это очень сложная задача - что-то даже не пойму с какого боку к ней подойти.. самое интересное что человек её решит за долю секунды, а вот как составить алгоритм для компьютера не понятно... эхх

Примечание:
35 просмотров и даже не одного комментария - гуру - вы где?

Примечание:
Причем здесь префикс? Необходимо ПЕРЕИМЕНОВАТЬ все файлы в каталоге по следующей логике - отрезать от существующего названия всё что левее самого крайнего справа дефиса, включая и сам этот дефис. Баксов не жалко - дадите сегодня рабочее решение - положу их вам на телефон. Но решение дожно быть на bash.

Примечание:
Ваш скрипт выдает вот что

./rename.sh: 4: ./rename.sh: [[: not found
./rename.sh: 4: ./rename.sh: [[: not found

пример имени файла

exten-222-73433791635-20120820-190517-1345467917.17.gsm

при тесте в каталоге был только один этот файл

Примечание:
то же самое

./rename.sh: 5: ./rename.sh: [[: not found
./rename.sh: 5: ./rename.sh: [[: not found

Примечание:
У меня debian wheezy , но решение нужно кроссплатформенное

Примечание:
а perl - это всё-таки не bash

Примечание:
вывод скрипта

server@server:/home/temp/1$ ./rename.sh
exten-222-73433791635-20120820-190517-1345467917.17.gsm -en exten-222-73433791635-20120820-190517
rename.sh

Молодой человек - вы мне похоже мозги заговариваете ) - у вас есть все данные для самостоятельных тестов - я же писал - должно работать на баше а он универсален

Примечание:
Извините если обидел - мысли такой даже не было

Заменил строку - вывод тот же

./rename.sh: 4: ./rename.sh: [[: not found
./rename.sh: 4: ./rename.sh: [[: not found
Ответы:
Свалили, достали одни и теже вопросы. Сами же нарвались, а теперь логти крызёте.
С тем же файлом у меня отрабатывает нормально.
Проверь, чтобы между if и [[ был пробел.
Попробуй так (не изменяй строку с echo, малоли ошибки будут):
> а perl - это всё-таки не bash
Bash это оболочка. Сама по себе она ничего не делает. Её задача выполнять программы.
> Молодой человек - вы мне похоже мозги заговариваете
Всё, я пошёл. Тебе помогаешь как можешь, а ты гадости говоришь. Удачи тебе.
Короче если хочешь давай доступ по ssh и сделаю за тебя. Логин и пароль лучше в личку, чтоб другие не видели.
- Если не нужно перемещаться в подкаталоги (иначе использовать find);
- Если в каталогах нет других файлов (иначе - дополнительно фильтровать grep'ом по какому-нибудь критерию);
- Если "xyz" "ext" и "ext2" не содержит символа "-" и искомая подстрока всегда начинается с "-" --
то все элементарно просто:


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.