Нужна помощь с командой переименования в Linux

Нужна помощь с командой переименования в Linux

У меня есть несколько файлов с такими именами:

file1, A.ext  
file1, The.ext  

Мне нужно изменить их имена, так как

A file1.ext  
The file1.ext

То есть мне нужно перенести статью из конца в начало, стерев запятую. Как это сделать?

Я рассмотрел команду rename, но у меня нет опыта работы с регулярными выражениями Perl. Я придумал эту нелепую команду, которая не работает. Я оставлю ее, чтобы показать свою безнадежность:

rename 's/(?<=[A-Z a-z \s]*),\sA//' *

решение1

Вам необходимо иметь:

rename -n 's/^([^,]*),\s*(.*)\.ext$/$2 $1.ext/' *
  • Соответствует ^([^,]*),всему, кроме запятой, до первой запятой в начале имени файла.

  • Соответствует \s*(.*)\.ext$нулю или более пробелов, за которыми следует что угодно, и заканчивается на .ext.

  • И $2$1это обратные ссылки на (.*)и ([^,]*)соответственно.

переименуем следующим образом:

rename(a single file,.ext,  a single file.ext)
rename(a single file, some thing.ext, some thing a single file.ext)
rename(file1, A.ext, A file1.ext)
rename(file1, the.ext, the file1.ext)

P,s: удалите -n, чтобы переименовать файлы, которые используются для тестирования.

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