sexta-feira, 27 de fevereiro de 2009

Renomear vários arquivos no Linux

Diante de um ocasião em que eu tinha que modificar os nomes de vários arquivos ao mesmo tempo. Procurei saber como faria isso automaticamente (eram muitos arquivos).
Achei vários scripts feitos por pessoas muito inteligentes(ou que sabiam copiar de alguem, mas isso não é problema meu) na internet.

Testei vários e vou colocar aqui as várias formas de fazer isso.

1. Mudar somente a extensão dos arquivos.
Há um comando bem simples no linux para modificar somente as extensões dos arquivos

rename .extensaoatual .extensaoquevocequer *.extensaoatual

Como você já deve ter entendido o campo 'extensaoatual' é a extensão que está nos seus arquivos, a que você quer mudar.
Exemplos:
Se vc tem várias fotos com a extensão .JPG, mas quer que as letras fiquem minusculas. Você deve digitar na console

# rename .JPG .jpg *.JPG

Isso fará com que todos os arquivos .JPG do diretorio atual (a pasta em que vc está no momento), fiquem com a extensão .jpg.

rename .GIF .gif *.gif

Isso fará com que todos os arquivos .GIF do diretorio atual (a pasta em que vc está no momento), fiquem com a extensão .gif.
E assim sucessivamente.
Dica de lugar que explica muito bem isso em Piter Punk's.

Como o que eu queria era renomear o 'nome' mesmo do arquivo e deixar a mesma extensão e não consegui descobrir como fazia isso com esse comando [:'(] , continuei procurando e achei outros dois scripts muito legais mesmo!

2. Script que substitui uma parte do nome de um arquivo por outra definida por você.
Dica pegue nesse site.

 #!/bin/bash

criterio=$1
antigo=$2
novo=$3

if [ $# -lt 3 ] ; then
echo "modo de usar: renomeia [criterio] [texto_a_ser_substituido] [texto_substituto]"
exit 0
fi

for arq in *$criterio*
do
mv "$arq" "$(echo $arq | sed "s/$antigo/$novo/")"
done
E como é que faz pra usar um script? Assim;
a. Abra um editor de texto;
b. Copie e cole essas linhas acima no arquivo em branco e salve o arquivo com um nome sugestivo, tipo 'renomear'.
c. Salve o script na pasta onde estão os arquivos a serem renomeados.
d. Estando no diretório onde estão os arquivos que vc quer renomear, digite na console
./nomedoarquivo, se salvar o arquivo como 'renomear',
digite ./renomear extensão 'padrao no nome do arquivo' 'palavra a ser substituida'.

Exemplo:

Você tem uma pasta com várias fotos nomeadas como '-1ª viagem-' e quer substituir isso por 'foto',
digite: ./renomear jpg '-1ª viagem-' 'foto'
Assim o trecho '-1ª viagem-' será substituido por 'foto' em todos os arquivos.

A explicação do site que serviu de referência é mais completa, incluindo alguns termos mais técnicos para quem quiser saber como o script funciona.

3. Renomear os arquivos de forma mais organizada ainda.
Dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php

  #!/bin/bash
#Padrao é qualquer coisa que vá antes do . (ponto) Ex.: Aniversario_do_Cabecao
echo -e "Padrao: \c"
read PADRAO
#A extensao do arquivo. Digitar jpg aqui pode ser uma boa ideia
echo -e "Extensao: \c"
read EXT

for DIR in $(ls)
do
i=$((i+1))
mv $DIR $PADRAO"_"$i.$EXT
done
O esquema para execução é o mesmo do script anterior: Abrir editor de texto, copiar, colar, salvar.
O que vai mudar um pouco é a chamada a ser feita na console.

Eu fiz assim:

a. Salvei como 'renomear2' na pasta onde estavam as fotos.
b. No diretório atual, digitei ./renomear2 .jpg
c. Daqui em diante, ele pede para vc digitar o padrão a ser procurado e a extensão do arquivo.

O que eu percebi foi que o arquivo é apagado quando o script é executado com sucesso.

Infelizmente, consegui renomear as fotos na primeira vez que tentei e fica muito legal, mas fiz outras tentativas e não obtive sucesso [:'(]

Vou tentar novamente e atualizarei o post.
Mais uma vez, a dica peguei de http://www.dicas-l.com.br/dicas-l/20080301.php

Até mais!






quinta-feira, 5 de fevereiro de 2009

Computação Gráfica: Começando...

Olá, iniciei meus estudos em computação gráfica e o professor sugeriu que usassemos o CodeBlocks como IDE para o implementar os algoritmos e tudo o mais...
No entanto, ele entregou para a turma um "arquivo base" que manipulava a API do Windows para marcar um pixel na tela do monitor. Como preferi utilizar o Linux para fazer os trabalhos, eu teria que manipular a API do Linux para fazer a mesma coisa. No entanto, o professor permitiu que eu usasse a OpenGL, para facilitar um pouco.
Para isso, tive um pouco mais de trabalho que meu colegas de sala para configurar o CodeBlocks, mas foi só um pouco. Como não quero esqueçer de como fiz isso. Vou escrever aqui como foi. (owwww volta pra dizer uma coisa né?)

Vamos lá.

Primeiro eu testei se minha placa de vídeo poderia executar os trabalhos que eu iria fazer, mesmo os que fossem em 3D.
Para isso, executei o comando glxgears.
Apareceu um monte de formas geométricas se movendo. Isso quer dizer que minha placa é capaz de rodar algumas coisas 3D.

Depois disso, foi hora de configurar o ambiente para acompanhar a disciplina sem problemas maiores que o conteúdo em si...

Fiz isso:

1. Eu tinha que ter alguns pacotes instalados no meu computador.
a. o CodeBlocks
b. o GCC (compilador de C para Linux)
c. a OpenGL
d. o GLUT.

2. Todos esses pacotes estavam disponiveis no Synaptic, então foi bem mais fácil.
a. O GCC já tava instalado, mas o nome que deve ser procurado é esse mesmo (gcc)
b. O CodeBlocks também foi bem fácil, a descrição do pacote diz qual é a IDE.
c. O GLUT é que foi diferente. Tinha um glut3 lá, mas instalei um pacote chamado freeglu3-dev d. Quando eu insalei o freeglu3-dev, aOpenGL já estava instalada.

Houve um momento em que ocorreu um erro "cannot find -lXxf86vm", procurando um pouco encontrei uma dica em um fórum (que esqueci de guardar o endereço :S) para baixar o pacote libxxf86vm -dev.
Fiz isso e o erro sumiu (mágica...hehehe).

Bom, com isso fica tudo lindo né? É só abrir a IDE e começar a sofrer...
nananinhanão

Quando abri o CodeBlocks e criei um projeto, tive que fazer algumas configurações (que não seria grande problema para quem conhece bastante de Linux, mas pra mim, foi desesperador) como dizer ao compilador onde estão as pastas include e lib e a localização do GLUT.
'Setei' as pastas dessa maneira.

include --> /usr/include/GL
lib --> /usr/lib

Na verdade, há outros campos para serem preenchidos, mas deixei só essas mesmo.

Isso parece simples agora, mas na hora foi meio chatinho...
Agora, vou tentar modificar a biblioteca para windows que o professor passou como base para a implementação dos algoritmos para poder utilizar a OpenGL no Ubuntu.
Copyright © 2014 KETE