Я использую 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
Я думаю, что приведенный выше код из , этот ответ мне поможет, но в моем случае при переименовании не добавляются символы. Я также нашел несколько ответов о вычитании частей имени в здесь , но в моем случае есть случайные числа.
Заранее спасибо!
Кажется, есть 16 цифр непосредственно перед строкой us
. Вы можете использовать переименовать
, чтобы удалить в общей сложности 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
(подробный) показывает имена файлов, которые были переименованы. Шаблон (\ d) {16}
указывает группу из 16 цифр. Показанный выше результат основан на трех примерах входных файлов. Вы также можете посмотреть другие примеры на переименовать
.
Пара вариантов, оба просто удаляют самый короткий _
суффикс из конца имени:
с помощью основанной на perl команды prename
$ prename -nv -- 's/_[^_]*\.jpg/.jpg/' *.jpg
img_00000_c0_1283347740957299us.jpg переименован в img_00000_c0.jpg
img_00000_c1_1283347740342342us.jpg переименован в img_00000_c1.jpg
(удалите опцию n
, когда вас устроит результат)
используя расширение параметров оболочки
$ 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
), вы можете это сделать, но это не кажется необходимым, исходя из предоставленной вами информации.