Найдите строку в имени и переместитесь в начало имени перед расширением.

Найдите строку в имени и переместитесь в начало имени перед расширением.

У меня много файлов в разных подкаталогах. Я хотел бы переименовать все файлы с *-ABC-DE(7 numbers).ext именем *-DE(7 numbers)-ABC.ext

Является ли это возможным?

решение1

Данный

$ ls *.ext
bar-ABC-DE7654321.ext  foo-ABC-DE1234567.ext

затем

$ rename -v 's/(ABC)-(DE\d{7})/$2-$1/' *.ext
rename(bar-ABC-DE7654321.ext, bar-DE7654321-ABC.ext)
rename(foo-ABC-DE1234567.ext, foo-DE1234567-ABC.ext)

в результате чего

$ ls *.ext
bar-DE7654321-ABC.ext  foo-DE1234567-ABC.ext

NB тест с -nпервым

Связанный контент