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 <julio.ne...@gmail.com>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 - clemis...@gmail.com > - 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 <julione...@openoffice.org > >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 - clemis...@gmail.com > > - 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 <heltonbi...@gmail.com > >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: shell-script-unsubscr...@yahoogrupos.com.br > --------------------------------------------------------------------- > 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]