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

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

Re: [shell-script] Criar diretórios baseados no nome de arquivo e mover


From: Helton Moraes
Subject: Re: [shell-script] Criar diretórios baseados no nome de arquivo e mover os arquivos
Date: Fri, 9 Jul 2010 08:57:22 -0300

Beleza, Julio, esse foi pra biblioteca!

Só pra constar, cheguei quase perto, com isto:

for file in $(ls | grep txt | cut -c-4)
do
    a=$(echo "$file" | sed -r 's/(..)../\1/')
    b=$(echo "$file" | sed -r 's/..(..)/\1/')
    mkdir "$b""$a"
    mv ./$file* "./$b$a"
done

mas não fiquei satisfeito com o laço (perfeccionismo bobo).
detalhe: pra piorar, os números são datas, vêm com o mês na frente do ano.
Na hora de salvar as pastas, eu queria o ano primeiro, depois o mês, por
isso as variáveis a e b.

Muito obrigado pelo ensinamento

Helton

Em 9 de julho de 2010 08:41, Julio C. Neves <address@hidden>escreveu:

> Fala Helton,
> pensei mais um minuto e resolvi como gerar uma saída mais limpa:
>
> $ ls | cut -c-4 | uniq | xargs -i bash -c "[ -d {} ] || mkdir {}; mv {}?*
> {}"
>
> Foi só botar o ponto de interrogação no mv, pois assim ele só move arquivos
> com 5 ou mais caracteres no nome, excluindo os diretórios cujos nomes têm 4
> caracteres.
>
> Abraços,
> Julio
> Cursos de Shell e Zenity em 2 fins de semana?
> - SE turma de Shell/Zenity em 26/07 - address@hidden
> - SP turma de Shell em 14/08 - www.4Linux.com.br
> - Turmas fechadas em outras cidades ligue (21)8112-9988.
>
>
> Em 9 de julho de 2010 08:34, Julio C. Neves <address@hidden
> >escreveu:
>
> > Aê Helton,
> > a linha é grande mas é um one-liner. Se o servidor de e-mail quebrá-la,
> > emende-a... :)
> >
> > $ ls [0-9][0-9][0-9][0-9]* | cut -c-4 | uniq | xargs -i bash -c "[ -d {}
> ]
> > || mkdir {}; mv {}* {}"
> >
> > Ao final vai dar um erro, mas já era esperado, vão ser os diretórios 0108
> e
> > 0109 tentando mover-se para dentro deles mesmos.
> >
> > Abraços,
> > Julio
> > Cursos de Shell e Zenity em 2 fins de semana?
> > - SE turma de Shell/Zenity em 26/07 - address@hidden
> > - SP turma de Shell em 14/08 - www.4Linux.com.br
> > - Turmas fechadas em outras cidades ligue (21)8112-9988.
> >
> >
> > Em 9 de julho de 2010 03:50, Helton Moraes <address@hidden
> >escreveu:
> >
> >
> >>
> >> Caros colegas, estou com um problema bobo mas não sei como resolver
> >> rapidamente.
> >>
> >> Tenho mais de mil arquivos assim:
> >>
> >> 0108as3g_10.txt
> >> 0108as4g_10.txt
> >> 0108as6g_10.txt
> >> 0108as6g_11.txt
> >> 0109as1g_10.txt
> >> 0109as1g_11.txt
> >> 0109as2g_10.txt
> >> 0109as2g_11.txt
> >> 0109as2g_12.txt
> >> 0109as3g_10.txt
> >>
> >> onde os quatro primeiros dígitos são o mês e o ano.
> >>
> >> O que eu preciso fazer (meio logo) é:
> >>
> >> 1) Criar uma estrutura de diretório tipo /aamm (ano na frente do mês)
> >> 2) Mover os arquivos para a pasta correspondente.
> >>
> >> Ficaria assim:
> >> /0801
> >> 0108as3g_10.txt
> >> 0108as4g_10.txt
> >> 0108as6g_10.txt
> >> 0108as6g_11.txt
> >> /0901
> >> 0109as1g_10.txt
> >> 0109as1g_11.txt
> >> 0109as2g_10.txt
> >> 0109as2g_11.txt
> >> 0109as2g_12.txt
> >> 0109as3g_10.txt
> >>
> >> Pensei em usar um
> >>
> >> for file in $(find -type f)
> >> do
> >> <sed, criar variáveis, if isso aquilo, etc, etc, mkdir, etc>
> >>
> >> mas tudo que fiz deu errado, inclusive o sed "cuspir" um monte de
> >> caracteres
> >> ilegíveis ao processar os resultados do find...
> >>
> >> Peço desculpa se parece bobo demais, mas sabe como é, não tenho usado
> >> muito
> >> Shell (tão me obrigando a aprender Java...) e a gente acaba
> enferrujando.
> >>
> >> Obrigado
> >>
> >> Helton
> >> <http://www.google.com/search?q=com>
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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