it-swarm-eu.dev

Najděte počet souborů ve složce a podsložkách?

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

157
topless

Může to být něco jako

find . -type f | wc -l

by udělal trik. Zkuste příkaz z nadřazené složky.

find . -name <pattern> -type f najde všechny f iles v . a podsložky. Výsledek (seznam nalezených souborů) je předán (|) až wc -l, která počítá počet l ines. -name <pattern> hledá pouze určité soubory.

245
sagarchalise

Použijte příkaz tree. Možná budete muset nainstalovat balíček tree.

Zobrazí seznam všech souborů a složek v dané složce a na konci shrnutí.

27
Egil

Chcete-li spočí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
17
user38537

Nejrychlejším a nejsnadnějším způsobem je použití tree. Jeho rychlost je omezena výstupním terminálem, takže pokud výsledek přepíšete na tail -1, získáte okamžitý výsledek. Můžete také ovládat, na jaké úrovni adresáře se vám výsledky líbí, pomocí -L možnost. 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 tam ještě není, můžete to získat zde .

13
not2qubit
find -type f -printf . | wc -c

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

10
user unknown

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
4
Sriram Murali

Můžete použít find . | wc -l

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

1
david

najít se zdá být rychlejší než strom, takže jsem použil níže pro počítání souborů v každém adresáři aktuálního pracovního adresáře (ignorování souborů v CWD) s povolením adresářů mít mezery:

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

1
Mike Bounds

S touto možností bych šel sám:

ls -alR | grep -c ^ -

0
Charles