shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Trocar nome de arquivo


From: Alexandre Mulatinho
Subject: Re: [shell-script] Trocar nome de arquivo
Date: Fri, 27 Jan 2017 18:27:31 -0300

Ficou bonito de se ver e fazer! :D

Ainda me embaralho, ou uso pouco o paste, tenho notado que você está usando bastante é bem útil, vou adotar! 

Umas heineken's para todos nós hoje a noite, é o que eu desejo,
[]z Alexandre Mulatinho 

Em 27 de jan de 2017, à(s) 15:20, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:


Oi Alexandre, acho que bastaria:

sed -E "s/^[A-Z0-9]+/BS/" /tmp/entrada

Já que o sed, por padrão, atua no arquivo inteiro, mas como tem de renomear os arquivos da entrada para o nome gerados na saída do sed (como disse o Itamar, dando colisão, pois serão gerados homônimos), acho que uma matada bonita seria:

$ paste /tmp/entrada <(sed -E "s/^[A-Z0-9]+/BS/" /tmp/entrada) | xargs -L1 mv

Ou seja, o paste junta os arquivos iniciais com os nomes correspondentes gerados e o xargs -L1 joga linha a linha depois do mv.

Para testar e ver funcionar, insira um echo, fazendo:

$ paste /tmp/entrada <(sed -E "s/^[A-Z0-9]+/BS/" /tmp/entrada) | xargs -L1 echo mv




Abcs,
Julio

Damos treinamento em sua empresa por 
um preço, 
no mínimo, 50% mais barato que qualquer curso,
com certificado e nota fiscal.

​​
Nosso time de instrutores in company é formado somente por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host



Em 27 de janeiro de 2017 10:59, Alexandre Mulatinho address@hidden [shell-script] <address@hidden> escreveu:
 

Opa, não li no primeiro momento que eram arquivos a serem trocados, me enganei e troquei apenas as strings;


1. Gera um arquivo contendo todos os nomes de arquivos a serem trocados:

$ cat /tmp/input.txt
GP01.CMDA
GP02.CMDA.RECX
RECX.CMDA.RECX
GP.CMDA
RC.RECX.CMDA

2. Modifica todos eles assim

$ while read LINE; do echo mv $LINE `echo $LINE | sed -E "s/([A-Z0-9]+)/BS/"`; done < /tmp/input.txt
mv GP01.CMDA BS.CMDA
mv GP02.CMDA.RECX BS.CMDA.RECX
mv RECX.CMDA.RECX BS.CMDA.RECX
mv GP.CMDA BS.CMDA
mv RC.RECX.CMDA BS.RECX.CMDA

3. Retire o primeiro ‘echo' da frente depois que validar a saída do comando para processar de acordo.

[]z Alexandre Mulatinho.


Em 26 de jan de 2017, à(s) 16:01, Leandro Valiengo address@hidden [shell-script] <address@hidden.br> escreveu:


Prezados, 

boa tarde. 

Tenho varios arquivos a processar com os seguintes prefixos : 

GP01.CMDA
GP02.CMDA.RECX
RECX.CMDA.RECX
GP.CMDA
RC.RECX.CMDA

Preciso fazer uma troca das primeiras strings ate o primeiro ponto por BS

Por exemplo: 
Atual: GP02.CMDA.RECX
Futuro BS.CMDA.RECX

Obrigado. 









reply via email to

[Prev in Thread] Current Thread [Next in Thread]