2015-05-29 3 views
1

У меня есть куча файлов с различными расширениями и я хотел бы добавить суффикс в конце все их имена:Переименование нескольких файлов с различными расширениями на Linux

Fe2-K-D4.rac 
Fe2-K-D4.plo 
Fe2-K-D4_iso.xy 
... 

в

Fe2-K-D4-4cc8.rac 
Fe2-K-D4-4cc8.plo 
Fe2-K-D4-4cc8_iso.xy 
... 

Я прочитал несколько сообщений об изменении расширения с помощью инструмента переименования, но я не знаю, как изменить имя и сохранить одно и то же расширение (я - последний пользователь linus).

Спасибо за любую помощь

ответ

1

Использование Extract filename and extension in Bash, я бы сказал:

for file in * 
do 
    extension="${file##*.}" 
    filename="${file%.*}" 
    mv "$file" "${filename}-4cc8.${extension}" 
done 

Это перебирает все файлы, получает свое имя и расширение, а затем перемещает его (то есть, переименовывает его) в данное имя с дополнительным значением -4cc8 перед расширением.

+1

Это работает как шарм! Добрый день, ты сделал мой. – Portecochon

1

Использование rename:

rename 's/[.]([^.]+)$/-4cc8.$1/' * 

s/[.]([^.]+)$/-4cc8.$1/ является perl expression of the form s/PATTERN/REPLACEMENT/ , который говорит rename сделать глобальную substition.

[.]([^.]+)$ является регулярное выражение шаблон со следующим значением:

[.]  match a literal period 
(  followed by a group 
    [  containing a character class 
    ^. composed of anything except a literal period 
    ]+ match 1-or-more characters from the character class 
)  end group 
$  match the end of the string. 

Схема замены, -4cc8.$1, говорит rename заменить совпадающий текст с буквальным -4cc8. с последующим текстом в первой группе совпадают, то есть все, что последовало буквальный период.

Смежные вопросы