Portál AbcLinuxu, 12. května 2025 08:58

Dotaz: Jak sečíst velikost položek

22.10.2012 00:54 Marek
Jak sečíst velikost položek
Přečteno: 271×
Odpovědět | Admin
Ahoj. Proč mi nefunguje tohle sčítání velikosti? Žádnou chybu to nepíše já taky žádnou nevidím ale výsledek se nevypíše. Potřebuji sečíst velikost všech souboru. Díky za pomoc
     ls /var/lib/mysql/namedb/*.MYD | while read FILE
     do
          SUM=($(du -hsb "$FILE"))
          SUM=$(($SUM+$SUM))
     done

     echo "Total bytes:" $TOTAL
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.10.2012 01:07 Atrament
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Protože máš výsledek v $SUM a vypisuješ $TOTAL
22.10.2012 01:10 Marek
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Tím to není, to jsem se jen uklepl :-(

edit
echo "Total bytes: $SUM"
22.10.2012 01:54 Atrament
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
A co to udělat s pomocí awku? Nebo tomu se právě snažíš vyhnout?

du -hsb /var/lib/mysql/namedb/*.MYD | awk '{total += $1}END{print total}'
22.10.2012 01:08 l4m4
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Roura vytváří subshell, takže nastavení proměnných po jejím skončení zmizí. Řešení je
while read FILE; do ... ; done <<<"$(ls ...)"
což je jen substituce a přesměrování, nikoli roura.
22.10.2012 01:20 Marek
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Roura vytváří subshell, takže nastavení proměnných po jejím skončení zmizí.
Aha, a kde vidíš že mám rouru? Díky
while read FILE; do ... ; done <<<"$(ls ...)"
a kde je uložený ten výsledek? Žádnou proměnou nevidím. Dík
22.10.2012 08:27 l4m4
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
kde vidíš že mám rouru?
Hned na prvním řádku.
kde je uložený ten výsledek?
Kdekoli chceš. Tři tečky si doplň. Ukázal jsem jen to jak se zbavit subshellu.
22.10.2012 01:51 Kit
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč to neudělat pořádně?
du -scb /var/lib/mysql/namedb/*.MYD | tail -n1
22.10.2012 10:20 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ja napríklad keď chcem spočítať obsah adresára tak použijem príkaz du -sh.

Môžeš si to upraviť podľa seba.

Root v linuxe : "Root povedal, linux vykona."
22.10.2012 10:45 Kit
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
To nefunguje, pokud to napíše takto: du -sh *.MYD
22.10.2012 10:54 ewew | skóre: 40 | blog: ewewov_blog
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek

Až teraz som zistil, že to nerobí to čo chceš.

Skús to zadať takto du -ch. Síce to výpíše aj veľkosti adresárov ale nakoniec napíše ceľkovú veľkosť. Vybrať len koniec môžeš pomocou príkazu grep -E "total".

Root v linuxe : "Root povedal, linux vykona."
22.10.2012 11:09 Kit
Rozbalit Rozbalit vše Re: Jak sečíst velikost položek
A co kdyby některý ze souborů měl v názvu slovo "total"? Grep bych neriskoval.
du -ch /var/lib/mysql/namedb/*.MYD | tail -n1
Nejsem tazatel.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.