Если у меня есть ряд файлов как:
1-3-Image Export-08_s3c1.jpg
и я хотел бы переименовать первую часть, чтобы выглядеть примерно так, путем добавления и замены первого расстаются с 'G2_NR2_replicate2':
G2_NR2_replicate2_s3c1.jpg
Как был бы я пакетная обработка это в терминале?
Работайте ниже rename
управляйте в каталоге где весь .jpg
файлы расположены,
rename 's/^[^_]*(.*)$/G2_NR2_replicate2\1/' *.jpg
Это переименовывает все файлы, которые находятся в формате (имя),
1-3-Image Export-08_s3c1.jpg
1-3-Image Export-08_s3c2.jpg
......
1-3-Image Export-08_s3c1000.jpg
кому:
G2_NR2_replicate2_s3c1.jpg
G2_NR2_replicate2_s3c2.jpg
.....
G2_NR2_replicate2_s3c1000.jpg
Объяснение:
's/^[^_]*(.*)$/G2_NR2_replicate2\1/'
rename
управляйте работами то же как sed
команда. (s/pattern/replace/
)
В части шаблона мы даем шаблон как ^[^_]*(.*)$
^
-> начальная точка
[^_]*
-> Соответствует любому символу кроме _
нуль или больше раз. Таким образом, это соответствует до 1-3-Image Export-08
и символ whaterver (s3c1
) прибывает после этой части пойманы и сохранил его в группу, которая была представлена этим шаблоном (.*)$
.
Теперь в сменной детали, мы помещаем текст, данный op (G2_NR2_replicate2
) плюс пойманная группа.
Наконец rename
команда выполняет целую операцию.
Править: @Avinash ответ Raj лучше. Используйте rename
управляйте вместо этого как показано.
Попытайтесь использовать sed
вместе с for
. См.: http://www.linuxquestions.org/questions/linux-general-1/bash-bulk-rename-files-4175429502/#post4792222