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

Я использую 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 

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

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

  • Как загружать базовую систему дуги, возможно, без pacstrap
  • Беспроводная связь невероятно медленная на Ubuntu Gnome 17.04
  • Запуск сценария инициализации при запуске определенного устройства и загрузке модуля ядра
  • UFW: разрешить трафик только с динамического IP на последних двух элементах
  • Grub спасение после поврежденного жесткого диска («файловая система только для чтения»)
  • Правильная настройка суффикса DNS Ubuntu 17.04?
  • Создание виртуальной машины Xen на сервере ubuntu
  • Как контролировать блокировку / разблокировку экрана в Ubuntu 14.04
  • 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

    Сценарий, который учитывает только установленные, TIME_WAIT и Closed Wait подключения с помощью Netstat

    присвоение переменной environement, за которой следует команда

    Может ли файловая система быть непоследовательной, если она прерывается при перемещении файла?

    (ubuntu 16.04) Как обнаружить независимое от устройства событие вставки USB

    что подразумевается под подключением STDOUT и STDIN?

    Создание виртуального файла, содержимое которого определяется программным путем

    AUTHBIND: невозможно выполнить аутентификацию с помощью tomcat 6 на хостере Redhat

    Может ли rsync обнаруживать изменения в собственнике / группе или perms?

    Восстановить исходную конфигурацию fail2ban на CentOS 7

    Проблема с доступом к / из разных разделов

    Cygwin – хвост останавливает чтение входной трубы после первой записи

    Скопируйте те же конкретные части файла в другой файл

    Как добавить ASCII-искусство в мой Bash?

    Принудительное название на экране GNU

    Удалить все до «/» на каждой строке

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