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: Julio C. Neves
Subject: Re: [shell-script] Criar diretórios baseados no nome de arquivo e mover os arquivos
Date: Fri, 9 Jul 2010 08:41:54 -0300

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]



reply via email to

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