
У меня есть несколько файлов с такими именами:
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
, чтобы переименовать файлы, которые используются для тестирования.