Acredito que para este cenário o ideal é você concatenar as linhas dos comandos
de forma que montem
a expressão e alimentar o bc.
Acho que dá pra fazer "pipeando"...
Algo como:
ls -l |grep arquivo.img | awk '{print $5 / 1024 /1024/1024}' | bc
Devo ter escrito alguma coisa errada no comando. Não estou com condições de
testar no momento... mas
veja se te ajuda...
Em 12/09/2014 11:57, "Gustavo Filgueiras address@hidden <mailto:address@hidden>
[shell-script]" <address@hidden <mailto:address@hidden>> escreveu:
__
Paulo,
Obrigado pelas respostas, mas eu estou tentando fazer sem usar
variavel, eu consegui chegar
até essa linha
echo $(( $(ls -l |grep arquivo.img | awk '{print $5}') / 1024 / 1024 / 1024
))
me retorna: 0
acredito que se eu tivesse conseguindo ver 2 casas decimais, retornaria:
0.09
Em 12 de setembro de 2014 11:41, Paulo Bettega address@hidden
<mailto:address@hidden> [shell-script] <address@hidden
<mailto:address@hidden>> escreveu:
Ainda na pergunta anterior :) com expr, e no awk acho que também dá.
(desculpem se entendi errado a pergunta).
$ ls -l etc.tgz|awk '{print $5}'
3160461
$ ls -l etc.tgz|awk '{print $5*8}'
25283688
$ expr $(ls -l etc.tgz|awk '{print $5}') \* 8
25283688
Meu pensamento na tua dúvida desse email, ficou meio feio mas
acho que faz o trabalho.
$ tamanho=$(ls -l etc.tgz|awk '{print $5}')
$ [ "$tamanho" -lt 1000000000 ] && echo 0$(bc
<<<"scale=3;$tamanho/1000000000")GB
0.003GB
Abraços Paulo Bettega
On 12-09-2014 10:16, Gustavo Filgueiras address@hidden
<mailto:address@hidden> [shell-script] wrote:
> Caros,
>
>
> Muito obrigado por todas as respostas e soluções, minha dúvida
foi solucionada.
> Porém pesquisando mais, estou com outra dúvida.
>
> Gostaria de extrair o tamanho em GB, mas levando em conta o
arquivo de 100MB, se eu der um ls
> -l --block-size=G |grep arquivo.img, vai me retornar 1GB.
> ls -l --block-size=G |grep arquivo.img
> -rw-r--r-- 1 root root 1G Sep 11 15:16 arquivo.img
>
> Mas gostaria que me retorna-se mais preciso, de verdade ele
deveria retornar ( 0.09765625 )
> mas se possivel cortar em 2 casas decimais. Procurei algo, mas nada
funcionou bem, tentei usando
> printf mas sem sucesso.
>
> 0.09 GB
>
> Em 12 de setembro de 2014 02:11, Fernando Mercês address@hidden
<mailto:address@hidden> <mailto:address@hidden <mailto:address@hidden>>
> [shell-script] <address@hidden <mailto:address@hidden>
<mailto:address@hidden <mailto:address@hidden>>> escreveu:
>
> __
>
> Ok, última mensagem sobre... Mas acho que vale a pena ver opções
diferentes pra mesma coisa:
>
> $ stat -c %s*8 mail.php | bc
> 2272
>
> Agora sim, fui. o/
>
>
>
>
> Att,
>
> Fernando Mercês
> Linux Registered User #432779
> www.mentebinaria.com.br <http://www.mentebinaria.com.br>
<http://www.mentebinaria.com.br>
> ------------------------------------
> "Ninguém pode ser escravo de sua identidade; quando surge uma
possibilidade de mudança é preciso
> mudar". (Elliot Gould)
>
> 2014-09-12 2:01 GMT-03:00 Fernando Mercês <address@hidden
<mailto:address@hidden> <mailto:address@hidden
<mailto:address@hidden>>>:
>
> De novo, sei que já resolveu o problema, mas se precisar de
desempenho pra isso (for fazer
> com muitos arquivos), fiz uma implementaçãozinha rápida em
ANSI C, assim você não depende do
> bash, bc, nem mesmo do Linux. Imitei a saída do wc. ;-)
>
> $ gcc -o bits bits.c
>
> $ ./bits mail.php .ssh/config .htcfg2
> 2272 mail.php
> 20376 .ssh/config
> 14064 .htcfg2
> 36712 total
>
> $ ./bits mail.php
> 2272 mail.php
>
> Aí se for o caso você altera como quiser, pra não imprimir o
nome do arquivo, ou não
> imprimir o total.. Enfim, tu que sabe. :)
> Mesmo que não use, já me diverti. Sem erro. hehe
>
> Abraço!
>
>
>
> Att,
>
> Fernando Mercês
> Linux Registered User #432779
> www.mentebinaria.com.br <http://www.mentebinaria.com.br>
<http://www.mentebinaria.com.br>
> ------------------------------------
> "Ninguém pode ser escravo de sua identidade; quando surge uma
possibilidade de mudança é
> preciso mudar". (Elliot Gould)
>
> 2014-09-12 1:09 GMT-03:00 Fernando Mercês <address@hidden
<mailto:address@hidden> <mailto:address@hidden
<mailto:address@hidden>>>:
>
> Opa, sei que já foi respondido, mas se você já sabe o
nome do arquivo, por que usar ls |
> grep? Eu faria direto, e talvez com o wc ao invés do ls
;-)
>
> Com aritimética do bash:
> $ echo $(($(wc -c < mail.php) * 8))
> 2272
>
> Com aritimética do bc:
> $ echo "$(wc -c < mail.php) * 8" | bc
> 2272
>
> Abraço!
>
>
>
> Att,
>
> Fernando Mercês
> Linux Registered User #432779
> www.mentebinaria.com.br <http://www.mentebinaria.com.br>
<http://www.mentebinaria.com.br>
> ------------------------------------
> "Ninguém pode ser escravo de sua identidade; quando surge
uma possibilidade de mudança é
> preciso mudar". (Elliot Gould)
>
> 2014-09-11 16:55 GMT-03:00 address@hidden
<mailto:address@hidden> <mailto:address@hidden
<mailto:address@hidden>>
> [shell-script] <address@hidden
<mailto:address@hidden> <mailto:address@hidden
<mailto:address@hidden>>>:
>
> __
>
> Claro que a conversao no caso foi base 2 mas pode ser
base=8 ou base=16 etc..
> Abracp
>
>
>
>
>
>
------------------------------------
------------------------------------
---------------------------------------------------------------------
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: address@hidden
<mailto:address@hidden>
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org <http://news.gmane.org>
Grupo: gmane.org.user-groups.programming.shell.brazil
------------------------------------
Links do Yahoo Grupos