Discussion:
[shell-script] Rename em diretórios
gean.linux@yahoo.com [shell-script]
2017-08-11 15:50:36 UTC
Permalink
Olá pessoal

Estou com uma tarefa aqui que é a seguinte:

tenho uma pasta com 1000 subpastas

Essas subpastas contem o seguinte formato:

0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...

O que eu preciso fazer é deixar apenas a string no nome da pasta, sem espaços e os números.

Eu encontrei o seguintes comandos:
rename 'y/0-9/ /' *
rename 'y/-/ /' *
rename 's/^ */ /' *



quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.


No entanto, quando coloco os comandos acima dentro de um arquivo script shell, executo, ele não renomeia todas as pastas, deixando algumas pendentes.



o erro que aparece relativo as pastas que não foram renomeadas são:


Can't rename : No such file or directory



Gostaria de saber se vocês podem dar uma pista...




Obs: estou iniciando na programação shell.


Obrigado


E abraços.
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-08-11 16:30:00 UTC
Permalink
Se o nome desses diretórios obedecerem a esta lei de formação, um simples:

$ rename 's/[0-9]{4} - //' *

​Resolve seu problema.​


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.
<https://www.4linux.com.br/curso/programacao-em-shell-script>

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
Post by ***@yahoo.com [shell-script]
Olá pessoal
tenho uma pasta com 1000 subpastas
0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...
O que eu preciso fazer é deixar apenas a string no nome da pasta, sem
espaços e os números.
rename 'y/0-9/ /' *
rename 'y/-/ /' *
rename 's/^ */ /' *
quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.
No entanto, quando coloco os comandos acima dentro de um arquivo script
shell, executo, ele não renomeia todas as pastas, deixando algumas
pendentes.
Can't rename : No such file or directory
Gostaria de saber se vocês podem dar uma pista...
Obs: estou iniciando na programação shell.
Obrigado
E abraços.
Tiago Peczenyj tiago.peczenyj@gmail.com [shell-script]
2017-08-11 15:52:46 UTC
Permalink
ola

http://funcoeszz.net/

zzarrumanome ou algo do tipo, vai salvar a sua vida.
Post by ***@yahoo.com [shell-script]
Olá pessoal
tenho uma pasta com 1000 subpastas
0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...
O que eu preciso fazer é deixar apenas a string no nome da pasta, sem
espaços e os números.
rename 'y/0-9/ /' *
rename 'y/-/ /' *
rename 's/^ */ /' *
quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.
No entanto, quando coloco os comandos acima dentro de um arquivo script
shell, executo, ele não renomeia todas as pastas, deixando algumas
pendentes.
Can't rename : No such file or directory
Gostaria de saber se vocês podem dar uma pista...
Obs: estou iniciando na programação shell.
Obrigado
E abraços.
--
Tiago B. Peczenyj

http://about.me/peczenyj
mr nobody gean.linux@yahoo.com [shell-script]
2017-08-11 17:44:53 UTC
Permalink
Vou verificar.
Obrigado Thiago.


Em Sexta-feira, 11 de Agosto de 2017 14:04, "Tiago Peczenyj ***@gmail.com [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  ola
http://funcoeszz.net/

zzarrumanome ou algo do tipo, vai salvar a sua vida.
2017-08-11 17:50 GMT+02:00 ***@yahoo.com [shell-script] <shell-***@yahoogrupos.com.br>:

  Olá pessoal

Estou com uma tarefa aqui que é a seguinte:

tenho uma pasta com 1000 subpastas

Essas subpastas contem o seguinte formato:

0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...

O que eu preciso fazer é deixar apenas a string no nome da pasta, sem espaços e os números.

Eu encontrei o seguintes comandos:
    rename 'y/0-9/ /' *
    rename 'y/-/ /' *
    rename 's/^ */ /' *


quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.
No entanto, quando coloco os comandos acima dentro de um arquivo script shell, executo, ele não renomeia todas as pastas, deixando algumas pendentes.

o erro que aparece relativo as pastas que não foram renomeadas são:
Can't rename  : No such file or directory

Gostaria de saber se vocês podem dar uma pista...

Obs: estou iniciando na programação shell.
Obrigado
E abraços.
--
Tiago B. Peczenyj

http://about.me/peczenyj #yiv4672594307 #yiv4672594307 -- #yiv4672594307ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv4672594307 #yiv4672594307ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv4672594307 #yiv4672594307ygrp-mkp #yiv4672594307hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv4672594307 #yiv4672594307ygrp-mkp #yiv4672594307ads {margin-bottom:10px;}#yiv4672594307 #yiv4672594307ygrp-mkp .yiv4672594307ad {padding:0 0;}#yiv4672594307 #yiv4672594307ygrp-mkp .yiv4672594307ad p {margin:0;}#yiv4672594307 #yiv4672594307ygrp-mkp .yiv4672594307ad a {color:#0000ff;text-decoration:none;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ygrp-lc {font-family:Arial;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ygrp-lc #yiv4672594307hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ygrp-lc .yiv4672594307ad {margin-bottom:10px;padding:0 0;}#yiv4672594307 #yiv4672594307actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv4672594307 #yiv4672594307activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv4672594307 #yiv4672594307activity span {font-weight:700;}#yiv4672594307 #yiv4672594307activity span:first-child {text-transform:uppercase;}#yiv4672594307 #yiv4672594307activity span a {color:#5085b6;text-decoration:none;}#yiv4672594307 #yiv4672594307activity span span {color:#ff7900;}#yiv4672594307 #yiv4672594307activity span .yiv4672594307underline {text-decoration:underline;}#yiv4672594307 .yiv4672594307attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv4672594307 .yiv4672594307attach div a {text-decoration:none;}#yiv4672594307 .yiv4672594307attach img {border:none;padding-right:5px;}#yiv4672594307 .yiv4672594307attach label {display:block;margin-bottom:5px;}#yiv4672594307 .yiv4672594307attach label a {text-decoration:none;}#yiv4672594307 blockquote {margin:0 0 0 4px;}#yiv4672594307 .yiv4672594307bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv4672594307 .yiv4672594307bold a {text-decoration:none;}#yiv4672594307 dd.yiv4672594307last p a {font-family:Verdana;font-weight:700;}#yiv4672594307 dd.yiv4672594307last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv4672594307 dd.yiv4672594307last p span.yiv4672594307yshortcuts {margin-right:0;}#yiv4672594307 div.yiv4672594307attach-table div div a {text-decoration:none;}#yiv4672594307 div.yiv4672594307attach-table {width:400px;}#yiv4672594307 div.yiv4672594307file-title a, #yiv4672594307 div.yiv4672594307file-title a:active, #yiv4672594307 div.yiv4672594307file-title a:hover, #yiv4672594307 div.yiv4672594307file-title a:visited {text-decoration:none;}#yiv4672594307 div.yiv4672594307photo-title a, #yiv4672594307 div.yiv4672594307photo-title a:active, #yiv4672594307 div.yiv4672594307photo-title a:hover, #yiv4672594307 div.yiv4672594307photo-title a:visited {text-decoration:none;}#yiv4672594307 div#yiv4672594307ygrp-mlmsg #yiv4672594307ygrp-msg p a span.yiv4672594307yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv4672594307 .yiv4672594307green {color:#628c2a;}#yiv4672594307 .yiv4672594307MsoNormal {margin:0 0 0 0;}#yiv4672594307 o {font-size:0;}#yiv4672594307 #yiv4672594307photos div {float:left;width:72px;}#yiv4672594307 #yiv4672594307photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv4672594307 #yiv4672594307photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv4672594307 #yiv4672594307reco-category {font-size:77%;}#yiv4672594307 #yiv4672594307reco-desc {font-size:77%;}#yiv4672594307 .yiv4672594307replbq {margin:4px;}#yiv4672594307 #yiv4672594307ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv4672594307 #yiv4672594307ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv4672594307 #yiv4672594307ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv4672594307 #yiv4672594307ygrp-mlmsg select, #yiv4672594307 input, #yiv4672594307 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv4672594307 #yiv4672594307ygrp-mlmsg pre, #yiv4672594307 code {font:115% monospace;}#yiv4672594307 #yiv4672594307ygrp-mlmsg * {line-height:1.22em;}#yiv4672594307 #yiv4672594307ygrp-mlmsg #yiv4672594307logo {padding-bottom:10px;}#yiv4672594307 #yiv4672594307ygrp-msg p a {font-family:Verdana;}#yiv4672594307 #yiv4672594307ygrp-msg p#yiv4672594307attach-count span {color:#1E66AE;font-weight:700;}#yiv4672594307 #yiv4672594307ygrp-reco #yiv4672594307reco-head {color:#ff7900;font-weight:700;}#yiv4672594307 #yiv4672594307ygrp-reco {margin-bottom:20px;padding:0px;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ov li a {font-size:130%;text-decoration:none;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv4672594307 #yiv4672594307ygrp-sponsor #yiv4672594307ov ul {margin:0;padding:0 0 0 8px;}#yiv4672594307 #yiv4672594307ygrp-text {font-family:Georgia;}#yiv4672594307 #yiv4672594307ygrp-text p {margin:0 0 1em 0;}#yiv4672594307 #yiv4672594307ygrp-text tt {font-size:120%;}#yiv4672594307 #yiv4672594307ygrp-vital ul li:last-child {border-right:none !important;}#yiv4672594307
mr nobody gean.linux@yahoo.com [shell-script]
2017-08-11 17:44:10 UTC
Permalink
Ola Julio.
Muito bom! deu certo, mas ainda continuo com o problema de não renomear todos arquivos de uma vez. Tem algum limite para processamento?
Ou algum outra forma de eu renomear mais de uma pasta de uma vez? Tentei também usando o xargs combinado com o find, mas também não consegui.
São 1070 pastas com essa mesmo formato que te falei. Dessas 1070, 78 não são renomeadas. Mas quando elimino as pastas que já foram renomeadas e executo o

rename, ele renomeia essas 78 pastas. Queria entender por que acontece isso.

Obrigado

Abs
Ps: comprei seus dois livro. Em breve iniciarei a leitura.



Em Sexta-feira, 11 de Agosto de 2017 12:50, "***@yahoo.com [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Olá pessoal

Estou com uma tarefa aqui que é a seguinte:

tenho uma pasta com 1000 subpastas

Essas subpastas contem o seguinte formato:

0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...

O que eu preciso fazer é deixar apenas a string no nome da pasta, sem espaços e os números.

Eu encontrei o seguintes comandos:
    rename 'y/0-9/ /' *
    rename 'y/-/ /' *
    rename 's/^ */ /' *


quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.
No entanto, quando coloco os comandos acima dentro de um arquivo script shell, executo, ele não renomeia todas as pastas, deixando algumas pendentes.

o erro que aparece relativo as pastas que não foram renomeadas são:
Can't rename  : No such file or directory

Gostaria de saber se vocês podem dar uma pista...

Obs: estou iniciando na programação shell.
Obrigado
E abraços.
#yiv4752115116 #yiv4752115116 -- #yiv4752115116ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv4752115116 #yiv4752115116ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv4752115116 #yiv4752115116ygrp-mkp #yiv4752115116hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv4752115116 #yiv4752115116ygrp-mkp #yiv4752115116ads {margin-bottom:10px;}#yiv4752115116 #yiv4752115116ygrp-mkp .yiv4752115116ad {padding:0 0;}#yiv4752115116 #yiv4752115116ygrp-mkp .yiv4752115116ad p {margin:0;}#yiv4752115116 #yiv4752115116ygrp-mkp .yiv4752115116ad a {color:#0000ff;text-decoration:none;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ygrp-lc {font-family:Arial;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ygrp-lc #yiv4752115116hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ygrp-lc .yiv4752115116ad {margin-bottom:10px;padding:0 0;}#yiv4752115116 #yiv4752115116actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv4752115116 #yiv4752115116activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv4752115116 #yiv4752115116activity span {font-weight:700;}#yiv4752115116 #yiv4752115116activity span:first-child {text-transform:uppercase;}#yiv4752115116 #yiv4752115116activity span a {color:#5085b6;text-decoration:none;}#yiv4752115116 #yiv4752115116activity span span {color:#ff7900;}#yiv4752115116 #yiv4752115116activity span .yiv4752115116underline {text-decoration:underline;}#yiv4752115116 .yiv4752115116attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv4752115116 .yiv4752115116attach div a {text-decoration:none;}#yiv4752115116 .yiv4752115116attach img {border:none;padding-right:5px;}#yiv4752115116 .yiv4752115116attach label {display:block;margin-bottom:5px;}#yiv4752115116 .yiv4752115116attach label a {text-decoration:none;}#yiv4752115116 blockquote {margin:0 0 0 4px;}#yiv4752115116 .yiv4752115116bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv4752115116 .yiv4752115116bold a {text-decoration:none;}#yiv4752115116 dd.yiv4752115116last p a {font-family:Verdana;font-weight:700;}#yiv4752115116 dd.yiv4752115116last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv4752115116 dd.yiv4752115116last p span.yiv4752115116yshortcuts {margin-right:0;}#yiv4752115116 div.yiv4752115116attach-table div div a {text-decoration:none;}#yiv4752115116 div.yiv4752115116attach-table {width:400px;}#yiv4752115116 div.yiv4752115116file-title a, #yiv4752115116 div.yiv4752115116file-title a:active, #yiv4752115116 div.yiv4752115116file-title a:hover, #yiv4752115116 div.yiv4752115116file-title a:visited {text-decoration:none;}#yiv4752115116 div.yiv4752115116photo-title a, #yiv4752115116 div.yiv4752115116photo-title a:active, #yiv4752115116 div.yiv4752115116photo-title a:hover, #yiv4752115116 div.yiv4752115116photo-title a:visited {text-decoration:none;}#yiv4752115116 div#yiv4752115116ygrp-mlmsg #yiv4752115116ygrp-msg p a span.yiv4752115116yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv4752115116 .yiv4752115116green {color:#628c2a;}#yiv4752115116 .yiv4752115116MsoNormal {margin:0 0 0 0;}#yiv4752115116 o {font-size:0;}#yiv4752115116 #yiv4752115116photos div {float:left;width:72px;}#yiv4752115116 #yiv4752115116photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv4752115116 #yiv4752115116photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv4752115116 #yiv4752115116reco-category {font-size:77%;}#yiv4752115116 #yiv4752115116reco-desc {font-size:77%;}#yiv4752115116 .yiv4752115116replbq {margin:4px;}#yiv4752115116 #yiv4752115116ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv4752115116 #yiv4752115116ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv4752115116 #yiv4752115116ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv4752115116 #yiv4752115116ygrp-mlmsg select, #yiv4752115116 input, #yiv4752115116 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv4752115116 #yiv4752115116ygrp-mlmsg pre, #yiv4752115116 code {font:115% monospace;}#yiv4752115116 #yiv4752115116ygrp-mlmsg * {line-height:1.22em;}#yiv4752115116 #yiv4752115116ygrp-mlmsg #yiv4752115116logo {padding-bottom:10px;}#yiv4752115116 #yiv4752115116ygrp-msg p a {font-family:Verdana;}#yiv4752115116 #yiv4752115116ygrp-msg p#yiv4752115116attach-count span {color:#1E66AE;font-weight:700;}#yiv4752115116 #yiv4752115116ygrp-reco #yiv4752115116reco-head {color:#ff7900;font-weight:700;}#yiv4752115116 #yiv4752115116ygrp-reco {margin-bottom:20px;padding:0px;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ov li a {font-size:130%;text-decoration:none;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv4752115116 #yiv4752115116ygrp-sponsor #yiv4752115116ov ul {margin:0;padding:0 0 0 8px;}#yiv4752115116 #yiv4752115116ygrp-text {font-family:Georgia;}#yiv4752115116 #yiv4752115116ygrp-text p {margin:0 0 1em 0;}#yiv4752115116 #yiv4752115116ygrp-text tt {font-size:120%;}#yiv4752115116 #yiv4752115116ygrp-vital ul li:last-child {border-right:none !important;}#yiv4752115116
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-08-11 18:08:17 UTC
Permalink
Aí teria de ver a execução para tentar deduzir o que está ocorrendo.
Experimente fazer:

export LC_COLLATE=C
Sai=0
for Arq in
do
[[ -f $(cut -f3- -d' ') ]] && {
echo $Arq já existe >&2
Sai=1
continue
}
mv "$Arq" $(cut -f3- -d' ')
exit $Sai
done

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.
<https://www.4linux.com.br/curso/programacao-em-shell-script>

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
Post by mr nobody ***@yahoo.com [shell-script]
Ola Julio.
Muito bom! deu certo, mas ainda continuo com o problema de não renomear
todos arquivos de uma vez. Tem algum limite para processamento?
Ou algum outra forma de eu renomear mais de uma pasta de uma vez? Tentei
também usando o xargs combinado com o find, mas também não consegui.
São 1070 pastas com essa mesmo formato que te falei. Dessas 1070, 78 não
são renomeadas. Mas quando elimino as pastas que já foram renomeadas e
executo o
rename, ele renomeia essas 78 pastas. Queria entender por que acontece isso.
Obrigado
Abs
Ps: comprei seus dois livro. Em breve iniciarei a leitura.
Olá pessoal
tenho uma pasta com 1000 subpastas
0001 - SHELL LTDA
0002 - PETROBRAS
e assim por diante...
O que eu preciso fazer é deixar apenas a string no nome da pasta, sem
espaços e os números.
rename 'y/0-9/ /' *
rename 'y/-/ /' *
rename 's/^ */ /' *
quando executo eles no bash, funcionam perfeitamente, atendendo a necessidade.
No entanto, quando coloco os comandos acima dentro de um arquivo script
shell, executo, ele não renomeia todas as pastas, deixando algumas
pendentes.
Can't rename : No such file or directory
Gostaria de saber se vocês podem dar uma pista...
Obs: estou iniciando na programação shell.
Obrigado
E abraços.
gean.linux@yahoo.com [shell-script]
2017-08-12 03:24:23 UTC
Permalink
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
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-08-13 14:28:01 UTC
Permalink
Eu suspeitei que poderia haver duplicata, por isso, na segunda proposta de
solução que te mandei, tinha um cmd for, em cujo bloco eu criei uma critica
que caso existisse arquivo com aquele nome ele avisaria ([[ -f $Arq ]] &&
echo ...).

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.
<https://www.4linux.com.br/curso/programacao-em-shell-script>



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
Post by ***@yahoo.com [shell-script]
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 Peczenyj tiago.peczenyj@gmail.com [shell-script]
2017-08-13 16:12:43 UTC
Permalink
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
Post by ***@yahoo.com [shell-script]
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
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-08-14 12:03:48 UTC
Permalink
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.
<https://www.4linux.com.br/curso/programacao-em-shell-script>



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
Post by Tiago Peczenyj ***@gmail.com [shell-script]
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.
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
Post by ***@yahoo.com [shell-script]
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 Peczenyj tiago.peczenyj@gmail.com [shell-script]
2017-08-14 17:09:26 UTC
Permalink
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é
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
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.
<https://www.4linux.com.br/curso/programacao-em-shell-script>
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
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Ola
Post by Tiago Peczenyj ***@gmail.com [shell-script]
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.
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
Post by ***@yahoo.com [shell-script]
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
Post by Tiago Peczenyj ***@gmail.com [shell-script]
http://about.me/peczenyj
--
Tiago B. Peczenyj

http://about.me/peczenyj
Continue reading on narkive:
Loading...