[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: Mover arquivos depois normatilizá-los
From: |
Tiago Peczenyj |
Subject: |
Re: [shell-script] Re: Mover arquivos depois normatilizá-los |
Date: |
Tue, 17 Jan 2012 13:48:20 -0200 |
existe um problema nessa abordagem, mas ela deve ser suficiente em boa
parte dos casos.
acontece que uma letra acentuada pode ser representada de duas formas
a letra é por exemplo pode ser
U+00E9 ʟᴀᴛɪɴ sᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ᴇ ᴡɪᴛʜ ᴀᴄᴜᴛᴇ
ou
combinação de U+0065 ʟᴀᴛɪɴ sᴍᴀʟʟ ʟᴇᴛᴛᴇʀ com U+0301 ᴄᴏᴍʙɪɴɪɴɢ ᴀᴄᴜᴛᴇ ᴀᴄᴄᴇɴᴛ
Para funcionar coisas desse tipo é preciso normalizar as strings
envolvidas. Nesse caso precisamos escolher se vamos fazer uma NFC ou
NFD
NFC: Canonical Decomposition
NFD: Canonical Decomposition, followed by Canonical Composition
fonte:
http://unicode.org/reports/tr15/
O importante é, qualquer que seja a escolha, deve ser aplicada em
ambos os lados, tanto nos argumentos do tr quanto no no arquivo em si.
Por exemplo se escolhermos a NFD precisamos primeiros executar sobre o
script uma NFD e depois garantir que a entrada dos dados sera
normalizada da mesma forma, assim um é sera igual a um é.
É virtualmente impossivel de distinguir a diferença entre dois é sem
usar algo como hexdump. Depende do setup do seu editor para o é ser um
byte ou dois.
Como fazer isso em shell? Hoje eu tenho uma solução para o mundo linux
com convmv com as opcões:
--nfc
target files will be normalization form C for UTF-8 (Linux etc.)
--nfd
target files will be normalization form D for UTF-8 (OS X etc.).
Espero ter ajudado
Tiago
2012/1/17 Julio C. Neves <address@hidden>
>
>
>
> ERREI! Me esqueci de algo fundamental. Eu escrevi:
>
>
>
> mv $(paste <(ls *) <(ls * | tr -d ' ' | tr [:upper:] [:lower:] | tr
> áàâãéêíîóôõúç aaaaeeiiooouc))
>
> Mas queria mesmo era ter escrito:
>
>
> paste <(ls *) <(ls * | tr -d ' ' | tr [:upper:] [:lower:] | tr
> áàâãéêíîóôõúç aaaaeeiiooouc) | xargs -L1 mv
>
>
> Abcs,
> Julio
> *Já foi lançado "Bombando o
> Shell<http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666>
> ". *
> *Show **de interfaces gráficas sob Shell!*
> *
> *
>
> Em 17 de janeiro de 2012 13:26, Julio C. Neves <address@hidden>escreveu:
>
>
> > One-liner:
> >
> > mv $(paste <(ls *) <(ls * | tr -d ' ' | tr [:upper:] [:lower:] | tr
> > áàâãéêíîóôõúç aaaaeeiiooouc))
> >
> > Abcs,
> > Julio
> > *Já foi lançado "Bombando o
> > Shell<http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666>
> > ". *
> > *Show **de interfaces gráficas sob Shell!*
> > *
> > *
> >
> >
> >
> > Em 17 de janeiro de 2012 13:12, Anderson Duarte <address@hidden>escreveu:
> >
> > **
> >>
> >>
> >> O Script do Aurélio, funcoeszz faz isso.
> >> Se vc instalar ele em sua maquina e depois abrir o script no editor, verá
> >> que a função chamada de "zzarrumanome" faz exatamente isso que vc quer.
> >> Tira acentos, espaços, (junta com um "_") e deixa tudo em minúsculo
> >>
> >> http://funcoeszz.net/
> >>
> >> Uso e recomendo. :)
> >>
> >> --
> >> Anderson Duarte (Rizada)
> >> http://rizada.org
> >> @andersonrizada
> >>
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
--
Tiago B. Peczenyj
Linux User #405772
http://pacman.blog.br
- Mover arquivos depois normatilizá-los, edgard, 2012/01/16
- Re: [shell-script] Mover arquivos depois normatilizá-los, Marlon Vagner Reck, 2012/01/16
- Re: Mover arquivos depois normatilizá-los, edgard, 2012/01/17
- Re: Mover arquivos depois normatilizá-los, edgard, 2012/01/17
- Re: [shell-script] Re: Mover arquivos depois normatilizá-los, MrBiTs, 2012/01/17