Vraag Zoek het aantal bestanden in map en submappen?


Ik wil de totale telling van het aantal bestanden onder een map en alle bijbehorende submappen vinden.


112
2018-04-08 11:55


oorsprong




antwoorden:


Misschien iets als

find . -type f | wc -l

zou het lukken. Probeer de opdracht uit de bovenliggende map.


179
2018-04-08 12:06



De oplossing zal mislukken op bestanden waarvan de namen een nieuwe regel bevatten. - user unknown
@gebruiker onbekend: find . -type f -ls | wc -l - arrange
nog sneller: find . -type f -print0 | tr -d -c '\0' | wc -c - arrange
@arrange: nog sneller: find . -type f -printf . | wc -c - Ik gebruik de afdruk voor mijn oplossing in plaats van mijn -exec echo. - user unknown
Houd er rekening mee dat dit ook verborgen bestanden telt die beginnen met een punt. Ik beschouw dit als een functie in plaats van een bug, maar het is goed om te weten. - cgogolin


Gebruik de tree opdracht. Mogelijk moet u het tree pakket.

Het toont een lijst met alle bestanden en mappen onder de gegeven map en een samenvatting aan het einde.


22
2018-04-08 12:09





Als u bestanden (zelfs bestanden zonder extensie) aan de hoofdmap van de huidige map wilt tellen, gebruikt u:

ls -l | grep ^- | wc -l

Bestanden tellen (ook bestanden zonder extensie) recursief uit de root van de huidige map, gebruik:

ls -lR | grep ^- | wc -l

10
2017-11-12 20:39





De snelste en gemakkelijkste manier is om te gebruiken tree. De snelheid wordt beperkt door uw uitgangsterminal, dus als u het resultaat naar Pipetteert tail -1, krijg je onmiddellijk resultaat. U kunt ook bepalen naar welk directory-niveau u de resultaten wilt, met behulp van de -L keuze. Gebruik voor ingekleurde uitvoer -C. Bijvoorbeeld:

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

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

Als het er nog niet is, kun je het krijgen hier.


9
2018-01-15 13:20





find -type f -printf . | wc -c

Tel de uitvoerregels van find niet, omdat bestandsnamen met 99 nieuwe regels tellen als 100 bestanden.


4
2018-04-08 14:21



Bestandsnamen met nieuwe regels zijn een ongelooflijk zeldzaam randnummer. - DisgruntledGoat
@DisgruntledGoat: dus een fout is erg moeilijk te vinden. - user unknown


Gebruik deze opdracht voor elke map in het pad

for D in *; do echo $D; find $D -type f| wc -l; done

2
2018-03-20 18:02





vinden lijkt sneller dan tree, dus ik gebruikte hieronder om bestanden in elke map van de huidige werkdirectory te tellen (bestanden negeren in CWD) door mappen toe te laten spaties te hebben:

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


1
2017-07-21 09:47



Ontbrekende uitvoer van ls is heel slecht idee. - souravc
Geweldige code, hoe kan ik de uitvoerregels ordenen in een toenemend of afnemend aantal bestanden - nightcrawler


Je kunt gebruiken find . | wc -l

find . zal een lijst maken van alle bestanden en mappen en de inhoud van de inhoud die begint in uw huidige map.
wc -l telt de resultaten van find


0
2018-04-08 12:06



Deze oplossing telt ook de mappen, ik gaf het merk omdat het overeenkwam met mijn gelegenheid dat ik ze niet wilde tellen :) - topless
De oplossing zal mislukken op bestanden waarvan de namen een nieuwe regel bevatten. - user unknown