shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] find + du


From: Julio C. Neves
Subject: Re: [shell-script] find + du
Date: Fri, 20 Apr 2007 12:13:28 -0300

Epa um one liner! Vai para a minha coleção:

$ du -ch | cut -f1 -d' ' | sed
's/\(.*\)\.\(.\)K/\1\200/;s/\(.*\)\.\(.\)M/\1\200000/' | paste -sd+ | bc

Isto éo cut pega somente o num e o multiplicador (K ou M). O sed guarda a
parte inteira em \1 e a decimal em \2. Se ele encontra um K ele o substitui
pelo inteiro, seguido do decimal, seguido de 2 zeros, o que equivale a
multiplicar por 1000. Usei o mesmo raciocínio para o M. O paste -s
transforma a coluna resultante em uma linha e a opção -d+ coloca o sinal de
mais como delimitador entre os numeros gerados. O bc faz a soma.

Como trabalhamos somente com inteiros, pq o ponto decimal dançou, tb
poderíamos fazer da seguinte maneira:

$ echo $(($(du -ch | cut -f1 -d' ' | sed
's/\(.*\)\.\(.\)K/\1\200/;s/\(.*\)\.\(.\)M/\1\200000/' | paste -sd+)))

Abração,
Julio
:wq

Em 20/04/07, Pedro Drimel <address@hidden> escreveu:
>
>   Quebrei a cabeça mas não consegui encontrar uma solução para utilizar o
> du
> como soma de tamanho sobre arquivos encontrados pelo find
>
> exemplo:
>
> pedro@servidor:~ $ du -ch .
> 4.0K ./.kde/share/config
> 4.0K ./.kde/share
> 4.0K ./.kde
> 4.0K ./Documents
> 4.0K ./public_html
> 4.0K ./.xemacs
> 133K .
> 133K total
>
> pedro@servidor:~ $ find . -type f -exec du -h {} \;
> 4.0K ./.kde/share/config/kdesktoprc
> 4.0K ./.xim
> 4.0K ./Documents/.directory
> 4.0K ./.exrc
> 4.0K ./.Xmodmap
> 4.0K ./.bashrc
> 4.0K ./.kermrc
> 4.0K ./.muttrc
> 4.0K ./public_html/.directory
> 4.0K ./.urlview
> 4.0K ./.viminfo
> 4.0K ./.xemacs/init.el
> 4.0K ./.sh_history_
> 0 ./.bash_history
> 8.0K ./.Xdefaults
> 12K ./.xscreensaver
> 4.0K ./.profile
> 4.0K ./.xinitrc
> 8.0K ./.xcoralrc
> 4.0K ./.emacs
> 16K ./.gnu-emacs
> 4.0K ./.zshrc
> 4.0K ./.xtalkrc
> 4.0K ./.sh_history_pneto6
> 4.0K ./.xsession
> 4.0K ./.xserverrc.secure
> 4.0K ./.dvipsrc
> O que eu quero é que no final do find exiba o total da soma dos arquivos
> (133K), até pensei em somar todos os valores mas pode vir a ter Mega ou
> Giga, deve ter algo mais racional que isso. Na verdade vou utilizar o find
> com -mtime e aí sim faz sentido pois o find . da na mesma que o du -h .
>
> Se alguém tiver uma idéia, agradeço.
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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