pergunta sobre como usar o comando renomear

5

Eu uso o comando rename para renomear vários arquivos ao mesmo tempo que segue

mas como posso fazer mais de uma alteração no mesmo comando

i.e. altere 1 to A e altere 2 to B

* UPDATE 1 *

eu usei o seguinte caso para testar, mas houve erros

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/' *

o resultado é

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

* Atualização 2 *

para resolver o problema, devo usar o / g. ou seja, 11 deve ser BB, mas para fazer isso / g é necessário caso contrário, apenas o primeiro número será alterado

, então o comando correto é

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 ' *
    
por Fat Mind 11.11.2015 / 08:41

2 respostas

4

Você pode inserir vários padrões de conversão separados por ; :

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

Se você quiser alterar todas as ocorrências de 1 e 2 em vez de apenas as primeiras, use o modificador g (global):

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

Exemplo:

$ 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
    
por heemayl 11.11.2015 / 08:48
6

Isso também é possível usando um comando rename :

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

Exemplo: a opção -n significa "Nenhuma ação: imprima nomes de arquivos a serem renomeados, mas não renomeie."

$ rename -n 'y/A-B/1-2/' *
rename(A, 1)
rename(B, 2)

Transliteração?

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.

Fonte

    
por A.B. 11.11.2015 / 09:23