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 - [email protected]
- 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 <[email protected]>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 - [email protected]
> - 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 <[email protected]>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: [email protected]
---------------------------------------------------------------------
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
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/
<*> Para sair deste grupo, envie um e-mail para:
[email protected]
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html