измените все имена файлов (префикс для добавления постфикса)

У меня есть каталог, содержащий тысячи файлов с именами

t_00xx_000xxx.png

Я хочу изменить их имена на 00xx_000xxx_t.png

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

0
задан 1 August 2018 в 06:26

3 ответа

mmv (доступно из репозитория universe) отлично подходит для такого рода вещей, где простые глобусы оболочки, а не регулярные выражения могут выполнять свою работу

Пример.

mmv -n -- '*_*_*.png' '#2_#3_#1.png'
t_00xx_000xxx.png -> 00xx_000xxx_t.png

Удалите -n, как только вы почувствуете, что он работает правильно.

0
ответ дан 28 October 2019 в 06:01

Если префикс разделяется подчеркиванием (_), можно сделать следующее:

rename -n 's/^([^_]*)_(.*)\.(.*)$/$2_$1.$3/' file(s)

Это будет работать с любым префиксом и любым расширением.

Удалите -n выполнить переименовывание, если Вы довольны результатом.


Объяснение:

  • s/search_pattern/replace_pattern/

Шаблон поиска:

  • ^ - Соответствуйте началу имени файла
  • ([^_]*) - Соответствуйте любому символу, который не является подчеркиванием [^_]* и получите его как $1 (...)
  • _ - Соответствуйте первому подчеркиванию
  • (.*)\.(.*) - Соответствуйте чему-либо .* прежде и после последнего . и получите его как $2 и $3. . должен быть оставлен, потому что это - специальный символ в Regex-> \.
  • $ - Соответствуйте концу строки

Шаблон замены:

  • $2_$1.$3 - "Filename_Prefix. Расширение" от получений шаблона поиска.
1
ответ дан 28 October 2019 в 06:01

Это возможно с rename команда:

Сначала проверьте то, что было бы сделано (suppliying -n). Если это выглядит хорошим, отбрасывание -n и выполненный снова:

rename -n 's/t_(.+)\.png$/$1_t.png/' *.png  # check only
rename    's/t_(.+)\.png$/$1_t.png/' *.png  # actually rename the files
0
ответ дан 28 October 2019 в 06:01

Другие вопросы по тегам:

Похожие вопросы: