3

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

some_name_123456789.zip
another-name2_987654321.zip
something(1)_123454321.zip
[2]something_987656789.zip

Мне нужно переименовать их всех в

ds_123456789.zip
ds_987654321.zip
ds_123454321.zip
ds_987656789.zip

Как я могу это сделать?

2 ответа2

9

Вы можете сделать это с помощью утилиты rename командной строки. Чтобы сделать то, что вы хотите, вам нужно простое регулярное выражение:

переименовать rename "s/.+_/ds/g" files

.+ представляет все до (в этом контексте) последнего символа подчеркивания (_) (так что это работает с несколькими подчеркиваниями, как упоминалось в первом примере). Это требует, чтобы перед подчеркиванием был хотя бы один символ; если у вас могут быть имена файлов, такие как _20131012.zip , используйте вместо этого .* . Таким образом , это три-символьная строка .+_ .*_ Будет соответствовать все до и включая последний символ подчеркивания в имени файла. s/old/new/ означает s ubstitute новую строку ds для старой строки. g означает g lobal и в этом случае может не потребоваться.

1

или, используя кроссплатформенный переименователь:

$ renamer --regex --find '.+_' --replace 'ds' *

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .