Sensacional:
quarta-feira, 27 de fevereiro de 2008
sexta-feira, 22 de fevereiro de 2008
Alterando Multiplos Arquivos (versão final?)
O site Dicas-L trouxe na ultima semana 2 formas de renomear multiplos arquivos (aqui e aqui)
#Forma 1
for o in $(ls -1 *.txt); do
mv $o $(echo $o | awk -F. '{print $1".htm"}');
done
#Forma 2
for i in `ls *.txt`; do
mv $i $(echo `basename $i .txt`.html)
done
São ambas formas interessantes, porém ao meu ver consomem muito recursos da maquina, sem falar que são um tanto... feios... (nada contra - o que importa é que funcione)
Vou utiliza-los como exemplo de como podemos tornar algo melhor e mais prático (se o tempo permitir).
Vamos dividir as paradas:
altera() { mv $1 $(echo `basename $1 .txt`.html) ; }
for i in `ls *.txt`; do
altera $i
done
Agora vamos tomar um cuidado: arquivos com espaço no nome
altera() { mv "$1" $(echo `basename "$1" .txt`.html) ; }
for i in `ls *.txt`; do
altera "${i}"
done
Bom, o for pode iterar sobre uma lista de argumentos. As mascaras de nome de arquivo são expandidos pelo shell durante a execução, logo...
for i in *.txt ; do
altera "${i}"
done
Agora, a rotina de alteração do nome do arquivo de destino é complicadissima, depende de um ou mais sub-processos. Isso poderia ser...
altera() { mv "$1" "${1%.txt}.html" ; }
Que, inserido no for...
for i in *.txt ; do
mv "${i}" "${i%.txt}.html"
done
Interessante, certo? Nenhum sub-processo, exceto o inumeros mv que serão executados. Existem outras formas de fazer a mesma coisa
ls *.txt | awk -F. -v OFS=. '{ O=$0; $NF="html" ;printf "\"%s\" \"%s\"\n",O,$0 }' | xargs -n 2 mv
ls *.txt | sed 's#^\(.\+\)\.[^.]\+$#"&" "\1.html"#g' | xargs -n 2 mv
(rodem as linhas acima sem o mv do xargs para entende-las -- é metaprogramação)
Agora... tudo isso é muito bonito mas... veja se o seu computador possui os comandos mmv ou rename (que facilitam Absurdamente a tarefa)
rename .txt .html *.txt
mmv "*.txt" "#1.html"
Simples, não?
Tudo depende do tempo que temos e das nossas necessidades. Mesmo que o rename/mmv sejam uteis, pode ser que a forma com awk / sed valha mais a pena pois o ls pode ser substituido por um find (ja pensou nisso?)
By
Tiago "PacMan" Peczenyj
às
19:27
3
comentários
Tags: Shell
sábado, 2 de fevereiro de 2008
Building Didier Stevens' SpiderMonkey in Cygwin
Eu estava quebrando a cabeça até que encontrei este post.
O Paul Melson ensinou de forma facil a compilar o SpiderMonkey para Cygwin: agora posso criar scripts usando javascript standalone.
Vantagem: Nenhuma, coisa de nerd :)
By
Tiago "PacMan" Peczenyj
às
14:26
0
comentários
Tags: Cygwin, Javascript
Assinar:
Postagens (Atom)