Portál AbcLinuxu, 26. července 2025 23:39


Dotaz: Počet souborů v adresaři

21.7.2011 22:21 Jaroslav Martuška
Počet souborů v adresaři
Přečteno: 3860×
Odpovědět | Admin
Dobrý večer, byl by někdo tak moc hodný a poradil jak můžu v bashi zpočítat počet souborů v adresáři? Předem upřimě děkuji za pomoc

Řešení dotazu:


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

Odpovědi

21.7.2011 22:34 mozog | skóre: 28
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hmm, to vypada jako ukol do skoly. ;-)
21.7.2011 22:35 Jaroslav Martuška
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
To taky je :(
21.7.2011 22:42 mozog | skóre: 28
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Zkus se podivat na man ls a man wc
21.7.2011 22:45 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Jde to i čistě v bashi, bez coreutils ;)
22.7.2011 00:05 Kit
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Jde to, ale je to lenošnější. Na druhou stranu je to přesnější, než ls a wc. Třeba takový soubor, který má \n v názvu...
22.7.2011 11:48 l4m4
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Když chci soubory jen spočítat, nebudu se přece patlat s jejich názvy...
find . -maxdepth 1 -mindepth 1 -type f -printf '*' | wc -c
Řešení 1× (rADOn)
xkucf03 avatar 22.7.2011 00:20 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba takhle:
n=0; for soubor in *; do n=$(($n+1)); done; echo Počet souborů = $n
ale počítá to i adresáře (to jsou vlastně taky soubory) a nepočítá to skryté soubory/adresáře.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 22.7.2011 00:24 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
P.S. ať to není tak ošklivě na jednom řádku:
#!/bin/bash

n=0;

for soubor in *; do
    n=$(($n+1));
    # Tady bychom si mohli vypisovat název souboru: 
    # echo $soubor
done; 

echo Počet souborů = $n
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
22.7.2011 11:52 l4m4
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Nepočítá to skryté soubory (.foo) a naopak to počítá adresáře.

Řešení, které jsem napsal výše, počítá pro změnu jen všechny normální soubory. Pokud se mají coby soubory počítat zařízení, symlinky, sokety, ..., tak to lze samozřejmě upravit.
xkucf03 avatar 22.7.2011 12:00 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Nepočítá to skryté soubory (.foo) a naopak to počítá adresáře.
Vždyť to tam píšu :-D

Souhlasím, že tím findem se dá líp určit, co se má počítat – tohle bylo spíš k tomu, že se to dá spočítat čistě v bashi.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
22.7.2011 13:10 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Ak to chceme cisto v bashi - pocet IBA suborov (regular file) vratane skrytych suborov:

#!/bin/bash

n=0;

for soubor in * .*; do
    if [ -f "$soubor" ]; then
      n=$(($n+1));
      # Tady bychom si mohli vypisovat název souboru:
      # echo $soubor
    fi;
done;

echo Počet souborů = $n
16.5.2015 10:53 Keramx
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejjednodušší:
find /cesta/do/adresáře -type f | wc -l
16.5.2015 11:31 RM
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
bude tě to blbě počítat soubory se znakem nového řádku ;).
16.5.2015 12:17 Jardík
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Ha! :-)
16.5.2015 12:43 RM
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Njn, jsi mi nakazil :) dokonalostí :). Ignorování nového řádku v souboru se neodpouští :)).
16.5.2015 14:33 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Lidé posedlí soubory se znaky nových řádků v názvech mohou použít následující ptákovinu. ;-)
find . -type f -mindepth 1 -maxdepth 1 -print0 2> /dev/null | hexdump -ve '1/1 "%02x\n"' | grep 00 | wc -l
16.5.2015 14:55 RM
Rozbalit Rozbalit vše Re: Počet souborů v adresaři
Až moc složité. Co napsal výše 4m4 stačí. (To použití formátu u hexdump se mi ale líbí moc;)

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.