Я использую соглашение об именах с префиксами чисел для отслеживания некоторых файлов.Но у меня заканчивается двухзначный префикс.Итак, вместо 11.abc 12.def
я хочу перейти на 011.abc 012.def
.У меня уже есть некоторые 013.xxx 014.yyy
.
, пробующие это в пустой директории:
touch 11.abc 12.def 013.xxx 014.yyy
ls -1
дает:
013.xxx
014.yyy
11.abc
12.def
Попробуйте # 1:
Это должно соответствовать всему, что начинается с 2 цифр, но не 3.
rename -n 's/^\d\d[^\d]/0$1/' *
Теперь я надеялся, что $1
держите матч, как 11
, с 0 $ 1, дающим мне 011
.
Нет такой удачи:
Use of uninitialized value $1 in concatenation (.) or string at (eval 2) line 1.
'11.abc' would be renamed to '0abc'
Use of uninitialized value $1 in concatenation (.) or string at (eval 2) line 1.
'12.def' would be renamed to '0def'
С положительной стороны, он готов оставить 013 и 014 в покое.
Попробуйте # 2 rename -n 's/^\d\d[^\d]/0/' *
'11.abc' would be renamed to '0abc'
'12.def' would be renamed to '0def'
Поскольку это основано на регулярных выражениях, могу ли я каким-то образом сохранить группу совпадений 11
и 12
?
ЕслиЯ не могу использовать переименование, я, вероятно, напишу быстрый скрипт на Python.Не хочу зацикливаться на mv
.
И, собственно, мое соглашение об именах состоит из 2-3 цифр, за которыми следует точка, так что это тоже хорошее совпадение.
rename -n 's/^\d\d\./<whatever needs to go here>/' *
Для чего я стою, я использую версию переименования Homebrew, как и на Mac.