Najít počet souborů ve složkách a podsložkách?

114

Chci najít celkový počet souborů ve složce a všech jejích podadresářích.

    
dané topless 08.04.2011 13:55

9 odpovědí

181

Může být něco jako

find . -type f | wc -l

by to dělal trik. Vyzkoušejte příkaz z nadřazeného adresáře.

    
odpověděl sagarchalise 08.04.2011 14:06
22

Použijte příkaztree. Možná budete muset nainstalovat balíčektree.

Zobrazí všechny soubory a složky pod danou složkou a na konci uvede souhrn.

    
odpověděl Egil 08.04.2011 14:09
10

Chcete-li počítat soubory (i soubory bez přípony) v kořenovém adresáři aktuálního adresáře, použijte:

ls -l | grep ^- | wc -l

Chcete-li počítat soubory (i soubory bez přípony) rekurzivně z kořenového adresáře aktuálního adresáře, použijte:

ls -lR | grep ^- | wc -l
    
odpověděl user38537 12.11.2013 21:39
9

Nejrychlejší a nejjednodušší způsob je použíttree. Jeho rychlost je omezena vaším výstupním terminálem, takže pokud provedete výsledek natail -1, získáte okamžitý výsledek. Můžete také řídit, na jakou úroveň adresáře se vám líbí výsledky, pomocí možnosti-L. Pro barevný výstup použijte-C. Například:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Pokud to ještě není, můžete jej zde .

    
odpověděl not2qubit 15.01.2014 14:20
4

find -type f -printf . | wc -c

Nepočítajte výstupní řádky hledání, protože názvy souborů obsahující 99 nových řádků se počítají jako 100 souborů.

    
odpověděl user unknown 08.04.2011 16:21
2

Tento příkaz použijte pro každou složku v cestě

for D in *; do echo $D; find $D -type f| wc -l; done
    
odpověděl Sriram Murali 20.03.2014 19:02
1

Zdá se, že je rychlejší než strom, takže jsem použil níže, abych počítal soubory v každém adresáři aktuálního pracovního adresáře (ignoruje soubory v CWD), takže adresáře mají mezery:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

    
odpověděl Mike Bounds 21.07.2016 11:47
0

Já bych s touto volbou sám:

  

ls -alR | grep -c ^ -

    
odpověděl Charles 29.05.2016 08:55
-1

Můžete použítfind . | wc -l

find . zobrazí všechny soubory a složky a jejich obsah začínající ve vaší aktuální složce.
wc -l počítá výsledky hledání

    
odpověděl david 08.04.2011 14:06