вопрос об использовании команды переименовывает

Я использую команду rename переименовать несколько файлов в то же время, что и следуют

но как я могу внести больше чем одно изменение в той же команде

т.е. изменение 1 to A и изменение 2 to B

* ОБНОВЛЯЮТ 1 *

я использовал следующий случай для тестирования, но были ошибки

touch {1..100}
rename 's/0/A/; s/1/B/; s/2/C/; s/3/D/; s/4/E/; s/5/F/; s/6/G/; s/7/H/;s/8/I/; s/9/J/' *

результат

ls 
B    BE  C   CF  D3  DG  EA  EH  FB  FI  GC  GJ  HD  I   IE  J9  JF
B1   BF  C2  CG  DA  DH  EB  EI  FC  FJ  GD  H   HE  I8  IF  JA  JG
BA   BG  CA  CH  DB  DI  EC  EJ  FD  G   GE  H7  HF  IA  IG  JB  JH
BA0  BH  CB  CI  DC  DJ  ED  F   FE  G6  GF  HA  HG  IB  IH  JC  JI
BC   BI  CD  CJ  DE  E   EF  F5  FG  GA  GH  HB  HI  IC  IJ  JD
BD   BJ  CE  D   DF  E4  EG  FA  FH  GB  GI  HC  HJ  ID  J   JE

* обновляют 2 *

для решения проблемы я должен использовать/g., т.е. 11 должен быть BB, но сделать это/g требуется, в других отношениях только первое число будет изменено

таким образом, корректная команда

rename 's/0/A/g; s/1/B/g; s/2/C/g; s/3/D/g; s/4/E/g; s/5/F/g; s/6/G/g; s/7/H/g; s/8/I/g ; s/9/J/g ' *
5
задан 11 November 2015 в 01:45

2 ответа

Вы можете вставить несколько конверсионных образцов, отделенных ;:

rename 's/1/A/; s/2/B/' *

, Если Вы хотите изменить все случаи 1 и 2, а не только первые, используйте g (глобальный) модификатор:

rename 's/1/A/g; s/2/B/g' *

Пример:

$ ls -1
1234
4321
foo12bar
spam23egg
test

$ rename -n 's/1/A/; s/2/B/' *
1234 renamed as AB34
4321 renamed as 43BA
foo12bar renamed as fooABbar
spam23egg renamed as spamB3egg

$ rename 's/1/A/; s/2/B/' *

$ ls -1
43BA
AB34
fooABbar
spamB3egg
test
4
ответ дан 23 November 2019 в 08:51

Это также возможно с помощью одной команды rename:

rename 'y/A-B/1-2/' *

Пример: переключатель -n означает «Нет действия: вывести имена файлов, которые нужно переименовать, но не t переименовать. "

$ rename -n 'y/A-B/1-2/' *
rename(A, 1)
rename(B, 2)
<час>

Транслитерация?

y/SEARCHLIST/REPLACEMENTLIST/cdsr

Transliterates all occurrences of the characters found in the search list
with the corresponding character in the replacement list. It returns the
number of characters replaced or deleted.

Источник

6
ответ дан 23 November 2019 в 08:51

Другие вопросы по тегам:

Похожие вопросы: