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

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

Re: [shell-script-pt] Localizar arquivos e substituir


From: Julio C. Neves
Subject: Re: [shell-script-pt] Localizar arquivos e substituir
Date: Mon, 20 Sep 2021 19:07:28 -0300

Como em Shell existem sempre dezenas de formas de fazer a mesma coisa, aí vai uma dica só usando expansão de parâmetros que, devido a isso, deve ser muito rápida:

$ Arq=Arquivo1-20.09.2021-Prof.Marcelo.xls
$ Ext=${Arq##*.}
$ : ${Arq%.*}; : ${_//./_}.$Ext
$ mv Arq $_

Abraços,
Julio
» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.








Em seg., 20 de set. de 2021 às 18:22, Blau Araujo <blau@debxp.org> escreveu:
 > ${velho##*.} expande: .xls

Aqui, o ponto (.) foi no embalo... é só `xls`.


Blau Araujo
-----------------------------
https://debxp.org
https://blauaraujo.com

Em 20/09/2021 18:19, Blau Araujo escreveu:
> Muito legal!
>
>
>
> Descartando o `rev`, também poderia ser assim:
>
>
> ```
> :~$ velho=Arquivo1-20.09.2021-Prof.Marcelo.xls
> :~$ novo=$(sed 's/\./_/g' <<< ${velho%.*}).${velho##*.}
> :~$ echo $novo
> Arquivo1-20_09_2021-Prof_Marcelo.xls
>
> ```
>
> Explicando:
>
> ${velho%.*} expande: Arquivo1-20.09.2021-Prof.Marcelo
> O *menor casamento* com o padrão '.*' no final da string
>
> ${velho##*.} expande: .xls
> O *maior casamento* com o padrão '*.' no início da string
>
>
>
> Abraços!
>
> Blau Araujo
> -----------------------------
> https://debxp.org
> https://blauaraujo.com
>
> Em 20/09/2021 17:25, Julio C. Neves escreveu:
>> Gostei da ideia do Alfredo de inverter (rev) e desinverter e vou
>> aproveitar para uma dica não muito conhecida, que faz parte da caixa
>> de ferramentas do sed e portanto tb faz parte do material do meu curso
>> sobre programação Shell. Veja como dá uma simplificada:
>>
>> *$ ArqInv=$(rev <<< $Arq)
>> $ ArqNovo=$(sed 's/\./_/2g' <<< $ArqInv | rev)*
>>
>> O macete a que me refiro é o *2g*, que significa a partir do 2º,
>> global. Veja:
>> *$ sed 's/a/X/' <<< abracadabra
>> *Xbracadabra
>> *$ sed 's/a/X/2' <<< abracadabra
>> *abrXcadabra
>> *$ sed 's/a/X/3' <<< abracadabra
>> *abracXdabra
>> *$ sed 's/a/X/3g' <<< abracadabra
>> *abracXdXbrX
>>
>> Abraços,
>> Julio
>> *» Não tem tempo para fazer um curso presencial?*
>> *» Na sua cidade não tem nenhum bom curso de Linux?*
>> *Veja detalhes** em:
>> **https://www.dicas-l.com.br/educacao/programacao-shell-linux/
>> <https://www.dicas-l.com.br/educacao/programacao-shell-linux/>*
>> *
>> *
>> *Também damos treinamento em sua empresa*
>> *em qualquer cidade**, **com certificado **e nota fiscal.*
>> *
>> *
>>
>>
>>
>>
>>
>>
>>
>> Em seg., 20 de set. de 2021 às 14:24, Alfredo Casanova
>> <atcasanova@gmail.com <mailto:atcasanova@gmail.com>> escreveu:
>>
>>     Sem parar pra bolar algo mirabolante:
>>
>>     filename=Arquivo1-20.09.2021-Prof.Marcelo.xls
>>     newname=$(rev <<< $filename | cut -f2- -d. | rev | sed 's/\./_/g')
>>     ext=$(rev <<< $filename | cut -f1 -d. | rev)
>>
>>     mv "$filename" "$newname.$ext"
>>
>>
>>     On Mon, Sep 20, 2021 at 2:01 PM Marcelo <msalavee@gmail.com
>>     <mailto:msalavee@gmail.com>> wrote:
>>
>>         Boa Tarde,
>>
>>         Tenho um servidor samba que alguns usuários começaram a salvar
>>         arquivos e diretórios com (.) no nome, por exemplo:
>>
>>         Arquivo1-20.09.2021-Prof.Marcelo.xls
>>
>>         Estou querendo bloquear este tipo de arquivo, mas antes preciso
>>         renomeá-los.
>>
>>         gostaria de substituir os (.) pontos no nome por (_)underline e
>>         deixar obviamente o (.) na extensão.
>>
>>         o Nome do arquivo ficaria:
>>
>>         Arquivo1-20_09_2021-Prof_Marcelo.xls
>>
>>         Alguém poderia dar uma dica?
>>
>>
>>         Obrigado,
>>         Marcelo
>>         _______________________________________________
>>         Lista brasileira de usuários de shell script
>>         Endereço de e-mail da lista: shell-script-pt@nongnu.org
>>         <mailto:shell-script-pt@nongnu.org>
>>         Para se inscrever ou desinscrever acesse:
>>         https://lists.nongnu.org/mailman/listinfo/shell-script-pt
>>         <https://lists.nongnu.org/mailman/listinfo/shell-script-pt>
>>         Para ver os arquivos da lista (mensagens anteriores) e pesquisar
>>         nelas, acesse
>>         https://lists.nongnu.org/archive/html/shell-script-pt/
>>         <https://lists.nongnu.org/archive/html/shell-script-pt/>
>>
>>         NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por
>>         favor utilize somente esta.
>>
>>
>>
>>     --     []'s
>>     Alfredo Tristão Casanova
>>     Linux User #228230
>>
>>     _______________________________________________
>>     Lista brasileira de usuários de shell script
>>     Endereço de e-mail da lista: shell-script-pt@nongnu.org
>>     <mailto:shell-script-pt@nongnu.org>
>>     Para se inscrever ou desinscrever acesse:
>>     https://lists.nongnu.org/mailman/listinfo/shell-script-pt
>>     <https://lists.nongnu.org/mailman/listinfo/shell-script-pt>
>>     Para ver os arquivos da lista (mensagens anteriores) e pesquisar
>>     nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/
>>     <https://lists.nongnu.org/archive/html/shell-script-pt/>
>>
>>     NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
>>     utilize somente esta.
>>
>>
>> _______________________________________________
>> Lista brasileira de usuários de shell script
>> Endereço de e-mail da lista: shell-script-pt@nongnu.org
>> Para se inscrever ou desinscrever acesse:
>> https://lists.nongnu.org/mailman/listinfo/shell-script-pt
>> Para ver os arquivos da lista (mensagens anteriores) e pesquisar
>> nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/
>>
>> NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
>> utilize somente esta.
>>
>
> _______________________________________________
> Lista brasileira de usuários de shell script
> Endereço de e-mail da lista: shell-script-pt@nongnu.org
> Para se inscrever ou desinscrever acesse:
> https://lists.nongnu.org/mailman/listinfo/shell-script-pt
> Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas,
> acesse https://lists.nongnu.org/archive/html/shell-script-pt/
>
> NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor
> utilize somente esta.

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

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