Organização de pastas

0

Eu tenho várias pastas ("amazon", "niger", "rhine", ...). Dentro de cada um deles eu tenho várias subpastas ("gfdl", "hadgem", "ipsl", ...). Cada subpasta é composta por 5 subpastas (por exemplo, em "amazon", a subpasta "gfdl" é composta por 5 subpasta 'amazon_gfdl', 'amazon_gfdl1', ..., 'amazon_gfdl5'); e as outras subpastas seguem a mesma estrutura (por exemplo, na subpasta "amazon" "ipsl" é composta por 5 subpastas 'amazon_ipsl', 'amazon_ipsl1', 'amazon_ipsl2', ... até 'amazon_ipsl5'. Eu tenho uma quantidade enorme de pastas seguindo o mesmo quadro de organização.Assim, a minha pergunta é a seguinte: Como posso organizar cada pasta e subpasta de tal forma que em cada subpasta ("gfdl", "hadgem", "ipsl", ...), 4 novas diretórios são criados ("1", "2", "3", "4") e, em seguida, a pasta, por exemplo, "amazon_gfdl" (já presente em "gfdl") é copiada em cada um desses novos diretórios e, finalmente, " amazon_gfdl1 "é movido para o novo diretório" 1 "," amazon_gfdl2 "é movido para o novo diretório" 2 "e assim por diante! Atualmente, estou usando o comando cp e movo dentro de cada subpasta, mas não é realmente eficiente e eu pode precisar de uma vida extra para terminar esta tarefa assim! Por isso, qualquer ajuda ou sugestão será muito apreciada. Muito obrigado!

    
por steve 02.08.2015 / 15:43

1 resposta

1

Você pode escrever um roteiro minúsculo para fazer isso para você, nesse sentido (ajuste conforme necessário, não sei se entendi direito):

> cat tst.sh 
#!/bin/bash
for river in amazon niger rhine ; do
    for name in gfdl hadgem ipsl ; do
        for count in 1 2 3 4 ; do
            mkdir ${river}/${name}/${count}
            cp -a ${river}/${name}/${river}_${name} ${river}/${name}/${count}
            mv ${river}/${name}/${river}_${name}${count} ${river}/${name}/${count}
        done
    done
done

Antes de executá-lo:

> find . | sort
.
./amazon
./amazon/gfdl
./amazon/gfdl/amazon_gfdl
./amazon/gfdl/amazon_gfdl1
./amazon/gfdl/amazon_gfdl2
./amazon/gfdl/amazon_gfdl3
./amazon/gfdl/amazon_gfdl4
./amazon/gfdl/amazon_gfdl5
...

Resultado:

> chmod u+x tst.sh
> ./tst.sh
> find . | sort
.
./amazon
./amazon/gfdl
./amazon/gfdl/1
./amazon/gfdl/1/amazon_gfdl
./amazon/gfdl/1/amazon_gfdl1
./amazon/gfdl/2
./amazon/gfdl/2/amazon_gfdl
./amazon/gfdl/2/amazon_gfdl2
./amazon/gfdl/3
./amazon/gfdl/3/amazon_gfdl
./amazon/gfdl/3/amazon_gfdl3
./amazon/gfdl/4
./amazon/gfdl/4/amazon_gfdl
./amazon/gfdl/4/amazon_gfdl4
./amazon/gfdl/amazon_gfdl
./amazon/gfdl/amazon_gfdl5
...
    
por 02.08.2015 / 16:44

Tags