On Thursday 27 May 2004 19:33, Adrian Popescu wrote:
> On Thursday 27 May 2004 17:45, Dan Uscatu wrote:
> > problema: sa se calculeze suma dimensiunilor tuturor fisierelor de un
> > anumit tip (de exemplu .jpg) din directorul curent.
>
> stat -c %s *.jpg | awk '{x=x+$1} END {print x}'
Orice solutie bazata pe faptul ca te astepti ca bash-ul sa-ti faca "expand" la
* din linia de comanda are un mare inconvenient: daca ai multe fisiere atunci
primesti un foarte frumos: "argument list too long".
Bottom line(s):
- solutia de mai sus e ok, in cazul in care ai putine fisiere (cu nume nu
foarte lungi)
- daca ai in vedere ca fisierele ar putea fi si in subdirectoare, gasirea
lungimii lor este recomandat a fi facuta cu find
- parsarea output-ului lui "ls-lR" e iarasi destul de consumatoare de timp in
cazul unui numar mare de fisiere
Deci solutia optima ar fi:
echo $(find . -type f -name ".*jpg" -printf "%s+")0 | bc
Mihai
---
Detalii despre listele noastre de mail: http://www.lug.ro/