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

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

Re: [shell-script] Re: Rename em diretórios


From: Tiago Peczenyj
Subject: Re: [shell-script] Re: Rename em diretórios
Date: Mon, 14 Aug 2017 17:09:26 +0000

Mas que maravilha de comando.

Eu tenho quase certeza que usei isso 2 empregos atrás na seguinte situação:

Armazenavamos videos em um diretorio assim:

ID_bitrate_tipo.mp4

E um dia estouramos o limite de arquivos em um diretorio. Ai foi preciso fazer um hash de diretorios

0/80/123456780_360_mobile.mp4

Com último digito do id, depois os 2 ultimos, e isso esta vivo até hoje :)

Foi um script com operação de módulo e talvez tenha sido one-liner até 

Em seg, 14 de ago de 2017 às 14:12, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:
 

Fala Tiago,
esse tal desse rename é um comando bem safado e desconhecido. Safado no bom sentido, pq ele te permite usar regex na especificação de registros (podendo inclusive agregar sw perl na sua linha de comandos, usando -e ou -E).

Mas aqui no caso, o que eu queria dizer sobre este cmd é que ele te permite fazer a simulação que vc propôs, desde que vc use a opção -n, qdo ele vai mostrar a linha que executaria, porém sem efetivamente executá-la.

Um exemplo: a linha a seguir renomeia sequencialmente os arquivos por ordem de criação, mais antigos para mais novos (essa ordem é dada pelo ls -cr), mantendo a extensão. Ela tem um código perl embutido. Pode testar à vontade, pois por ter a opção -n, não executa a linha, só a mostra.

$ ls -1cr | xargs rename -n 's/^[^\.]*(\..*)?$/our $i; sprintf("%03d$1", $i++)/e'

Em Agosto darei um treinamento de 40 horas no RJ e em BSB sobre 

Programação em Shell, com imersão em Expressões Regulares e dicas
de YAD. Para mais detalhes acesse goo.gl/JkWmBx
Em  Dezembro um curso com este mesmo conteúdo/carga horária será
lecionado em SP. Maiores detalhes neste site.



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
Produção Gráfica e Videografismo Cadunico

Em 13 de agosto de 2017 13:12, Tiago Peczenyj address@hidden [shell-script] <address@hidden> escreveu:

Ola

Quando é aplicavel, eu adiciono uma serie de opções nos meus scripts.

Uma opção é "debug" onde eu mando pra stderr muita informação 

Outra é "dry-run" que basicamente vai fingir que uma ação foi feita, imprimindo no caso.

Se a modificação que o script vai fazer é importante (como apagar ou renomear) vc pode aplicar as ideias mesmo q vc só precise executar isso uma vez na vida.

Sua primeira versão vai imprimir e vc vai gastar um bom tempo analisando o log. Certamente vai encontrar situações excepcionais.

Se não encontrar, uma opção de debug  pode elucidar as coisas. Se um comando deu erro, certamente havera uma mensagem ou error code.

Uma estratégia mais divertida é vc gerar outro shell script:

O primeiro lista e gera um segundo com cada linha sendo um "mv antigo novo && echo ok || exit(1)", voce audita as linhas e executa. 

Se o conteúdo é importante, faça backup e veja se o que eu disse ai ajuda

Em sáb, 12 de ago de 2017 às 05:24, address@hidden [shell-script] <address@hidden> escreveu:
 

Deu certo! Descobri por que não estava renomeando todas pastas...

Tinha pasta com o mesmo nome, por isso o rename não estava executando em algumas pastas.

por exemplo, as pastas;

0001 - SHELL LTDA
0002 - SHELL LTDA

o rename só esta funcionando em apenas uma pasta. Pois não permitia duas pastas com o mesmo nome.


Mas deu pra descobrir pastas em duplicidade, agora é só arrumar.


Muito obrigado Galera.

Abs

--

Tiago B. Peczenyj

http://about.me/peczenyj


--
Tiago B. Peczenyj

http://about.me/peczenyj

reply via email to

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