переименование нескольких файлов путем удаления случайных чисел

Я использую Ubuntu, и у меня много файлов. Файлы имеют два типа.

"img_00000_c0_1283347740957299us.jpg" "img_00000_c1_1283347740342342us.jpg" 

Они различаются c0 или c1. Числа в позиции «00000» увеличиваются по мере увеличения номера файла. Например, тип c0 и 5-й файл будет иметь имя «img_ 00005 _c0_1283347740957299us.jpg». Проблема в том, что длинные числа после 'c0_' или 'c1_' для меня бессмысленны и являются случайными числами. Они не всегда «1283347740957299us». Поэтому я хочу переименовать эти файлы, просто исключив эти последние числа.

 img_00005_c1_1283347740957299us.jpg ---> img_00005_c1.jpg 

Я попробовал несколько ответов в Интернете. Например, ответ вроде

 for FILE in eventDataLog.txt.2015*; do mv "$FILE" "abc-$FILE"; done 

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

Заранее спасибо!

  • Перемещение корневого каталога в отдельный раздел
  • Как я могу совместно использовать интернет-соединение через USB?
  • Восстановление HP SmartArray RAID5 на Linux
  • Как исправить ошибку: «ошибка поиска символа: /usr/local/lib/libQt5DBus.so.5: undefined symbol»?
  • Разрешения при создании простого пакета Python для pip
  • Как начать телефонный звонок с терминала в телефоне Ubuntu?
  • Ошибка с gedit не может сохранить файл
  • Преобразуйте файл Systemd (systemctl) из CentOs в Ubuntu
  • 2 Solutions collect form web for “переименование нескольких файлов путем удаления случайных чисел”

    Пара опций, одновременно удаляющих кратчайший суффикс с конца имени:

    1. с командой prename основе prename

       $ prename -nv -- 's/_[^_]*\.jpg/.jpg/' *.jpg img_00000_c0_1283347740957299us.jpg renamed as img_00000_c0.jpg img_00000_c1_1283347740342342us.jpg renamed as img_00000_c1.jpg 

    (удалите опцию n когда вы довольны результатом)

    1. с использованием расширения параметра оболочки

       $ for f in img_*.jpg; do echo mv -- "$f" "${f%_*}.jpg"; done mv -- img_00000_c0_1283347740957299us.jpg img_00000_c0.jpg mv -- img_00000_c1_1283347740342342us.jpg img_00000_c1.jpg 

    (удалите echo когда вы довольны выходом).

    Если вы хотите более точно сопоставить шаблон (т. Е. Как последовательность из одной или нескольких десятичных цифр, за которой следует us ), вы можете сделать это, но это не кажется необходимым на основе предоставленной вами информации.

    Кажется, есть 16 цифр перед строкой us . Вы можете использовать rename чтобы удалить все 18 символов, как показано ниже.

     rename -v 's/_(\d){16}us//' *.jpg img_00000_c0_1283347740957299us.jpg renamed as img_00000_c0.jpg img_00000_c1_1283347740342342us.jpg renamed as img_00000_c1.jpg img_00005_c1_1283347740957299us.jpg renamed as img_00005_c1.jpg 

    Параметр -v (verbose) показывает имена файлов, которые переименованы. Шаблон (\d){16} указывает на группу из 16 цифр. Вышеприведенный результат основан на трех входных файлах образца. Вы также можете посмотреть другие примеры rename .

    Interesting Posts

    Как видеть письма, отправленные мной в Evolution

    Убивание процесса cron и предотвращение его перезапуска

    Различие между Sha1sum, Sha256sum и Md5sum

    ipfw: Формирование трафика

    Ожидайте сценарий для копирования файла

    Что мне нужно сделать дополнительно, чтобы запустить X, чтобы не заканчиваться на черном экране?

    Как сделать псевдоним постоянным?

    Размещение приложений и пользовательских файлов в Linux-системе

    Удалите первые n байтов файла в O (n) времени

    Что останавливает использование видеокарт в полной мере для Linux?

    Как отслеживать последний PID, назначенный ядром?

    Как использовать разные DNS-пересылки на основе IP-адреса источника или MAC-адреса?

    Поиск заменить в файле XML с помощью sed или awk

    Сообщения на новом терминале после использования nohup

    Как настроить службу systemd для выполнения команды simple / bin / echo «Hello world», чтобы показать вывод на консоли?

    Linux и Unix - лучшая ОС в мире.