Renomear aquivos em lote [RESOLVIDO]

1. Renomear aquivos em lote [RESOLVIDO]

Teofilo Fabio Macedo
teomacedo

(usa Outra)

Enviado em 08/01/2021 - 02:44h

Tenho diretórios que seguem o esse padrão 001234-nome-diretorio e outros que seguem 01234-nome-diretorio. A diferença esta na quantidades de zeros que existem no início do nome do diretório.
Quero renomear todos os diretórios que possuem apenas um zero adicionando o segundo, assim todos os diretórios irão iniciar com dois zeros.
Quais comandos eu devo concatenar para conseguir executar isso?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/01/2021 - 17:24h

teomacedo escreveu:

Tenho diretórios que seguem o esse padrão 001234-nome-diretorio e outros que seguem 01234-nome-diretorio. A diferença esta na quantidades de zeros que existem no início do nome do diretório.
Quero renomear todos os diretórios que possuem apenas um zero adicionando o segundo, assim todos os diretórios irão iniciar com dois zeros.
Quais comandos eu devo concatenar para conseguir executar isso?

Qual distro vc utiliza?
Como já foi dito, o rename é bem prático:
[email protected]:$ → pwd
/home/adminq/testes
[email protected]:$ → stat -c %n *
007-dir
01-dir
02-dir
03-dir
04-dir
05-dir
06-dir
[email protected]:$ → rename 's/(^[0])([1-9]+)/00$2/' *
[email protected]:$ → stat -c %n *
001-dir
002-dir
003-dir
004-dir
005-dir
006-dir
007-dir


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________



3. Re: Renomear aquivos em lote [RESOLVIDO]

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 08/01/2021 - 16:30h

Usa o perl-rename cara. (em algumas distros, o pacote se chama prename)

$ cd /dir/subdir
$ ls
002b/ 01a/ 3c/
$ perl-rename 's/\d+/sprintf("%03d", $&)/e' *
$ ls
001a/ 002b/ 003c/


---
echo 1244394795515721490698P | dc


4. Re: Renomear aquivos em lote

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 08/01/2021 - 19:18h

Se estiverem no mesmo diretório vc pode tentsr
ls -d 0? | xargs -I {} mv {} 0{}


5. Re: Renomear aquivos em lote [RESOLVIDO]

Andre (pinduvoz)
pinduvoz

(usa Debian)

Enviado em 08/01/2021 - 22:18h

Só para constar, há utilitários gráficos que servem para renomear em lote de maneira simplificada.

Exemplo:

https://sempreupdate.com.br/instalar-o-smart-file-renamer-no-ubuntu-fedora-debian-centos-e-opensuse-...


6. Re: Renomear aquivos em lote

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 09/01/2021 - 15:33h

leandropscardua escreveu:
(Corrigindo minha sugestão anterior pq ls não suporta regex)
Se estiverem no mesmo diretório vc pode tentsr
ls -d | egrep '^0[1-9]+' | xargs -I {} mv {} 0{}





7. Resolveu minha vida! rsrsr

Teofilo Fabio Macedo
teomacedo

(usa Outra)

Enviado em 22/01/2021 - 12:06h

Deu certo!!!!
Muito obrigado. (Desculpe a demora para agradecer.)
Caso alguém mais precise dessa solução, para o caso do Ubuntu use o (rename)
$ rename 's/\d+/sprintf("%05d", $&)/e' *