Ik moet dus weten hoeveel files er in een bepaald dir en al zijn subdirs zitten, ik gebruik linux. Hoe krijg ik dat voor elkaar?
Ga naar de directory en tik in:Op zaterdag 05 januari 2002 14:53 schreef Blubber het volgende:
Ik moet dus weten hoeveel files er in een bepaald dir en al zijn subdirs zitten, ik gebruik linux. Hoe krijg ik dat voor elkaar?
find * | wc -l
find * levert je alle bestanden op (inclusief subdirectories) en de uitvoer hiervan stuur je door naar wc (=wordcount). Met behulp van de optie -l geef je aan dat je het aantal regels wilt weten.
Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker
Hartelijk dank, dat was precies wat ik nodig hadOp zaterdag 05 januari 2002 14:56 schreef hammerhead het volgende:
[..]
Ga naar de directory en tik in:
find * | wc -l
find * levert je alle bestanden op (inclusief subdirectories) en de uitvoer hiervan stuur je door naar wc (=wordcount). Met behulp van de optie -l geef je aan dat je het aantal regels wilt weten.
Verwijderd
Volgens mij pak je op deze manier wel de subdirs mee, maar niet de inhoud ervan. En volgens mij was dit wel de bedoeling :Op zaterdag 05 januari 2002 18:21 schreef Newjersey_nl het volgende:
je kan ook ls | wc -l doen
Op zaterdag 05 januari 2002 14:53 schreef Blubber het volgende:
je kan ook k moet dus weten hoeveel files er in een bepaald dir en al zijn subdirs zitten, ik gebruik linux. Hoe krijg ik dat voor elkaar?
maar dan neem je de bestanden in onderliggende directories niet mee. Is er een manier om de directories niet te tellen maar wel de bestanden in de onderliggende dir's?Op zaterdag 05 januari 2002 18:21 schreef Newjersey_nl het volgende:
je kan ook ls | wc -l doen
Verwijderd
find -type f | wc -lOp zaterdag 05 januari 2002 18:29 schreef balk het volgende:
[..]
maar dan neem je de bestanden in onderliggende directories niet mee. Is er een manier om de directories niet te tellen maar wel de bestanden in de onderliggende dir's?
telt alleen de bestanden
find -type d | wc -l
telt alleen de directories
zie man find voor de overige opties
find * -type f | wc -lOp zaterdag 05 januari 2002 18:29 schreef balk het volgende:
[..]
maar dan neem je de bestanden in onderliggende directories niet mee. Is er een manier om de directories niet te tellen maar wel de bestanden in de onderliggende dir's?
telt alleen de 'regular files' en is dus ook een betere oplossing dan die van hammerhead, want op deze manier worden de directories niet meegetelt (die onder Unix eigenlijk niet meer dan speciale files zijn).
(ok 'Operations' had blijkbaar een hoger cijfer op z'n typdiploma dan ik
code:
1
2
3
4
5
| odysseus@odysseus:~$ find * find: invalid predicate `-' odysseus@odysseus:~$ ls -R | grep -v \.\/ | grep -v ^$ | grep -v \.: | wc -l 14024 odysseus@odysseus:~$ |
En ja, je kunt al die grep-opdrachten ook in een enkele grep zetten, maar dat vereist dan wel ongeveer een klein half uur studie om te zien hoe die regexp in elkaar zit, als je die dingen niet dagelijks gebruikt
Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.
Het moet ook 'find . -type f' zijn, niet 'find * -type f'. De GNU find eet ook 'find -type f' btw.
Ik wilde nu net laten zien dat dat commando niet klopteOp zaterdag 05 januari 2002 21:44 schreef deadinspace het volgende:
Het moet ook 'find . -type f' zijn, niet 'find * -type f'. De GNU find eet ook 'find -type f' btw.
* odysseus merkt nog even op dat je met 'locate' ook een heel eind kunt komen, al zul je dan wel ook directories gaan tellen...maar eigenlijk is een directory natuurlijk ook gewoon een bestand, het besturingssysteem doet er alleen wat speciaals mee
Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.
Valt reuze mee hoor:Op zaterdag 05 januari 2002 19:56 schreef odysseus het volgende:
code:
1 ls -R | grep -v \.\/ | grep -v ^$ | grep -v \.: | wc -l
En ja, je kunt al die grep-opdrachten ook in een enkele grep zetten, maar dat vereist dan wel ongeveer een klein half uur studie om te zien hoe die regexp in elkaar zit
code:
1
| ls -R | grep -vE "\.\/|^$|\.:" | wc -l |
De find methode is natuurlijk wat makkelijker.
Waarom is find * niet goed dan?Op zaterdag 05 januari 2002 21:44 schreef deadinspace het volgende:
Het moet ook 'find . -type f' zijn, niet 'find * -type f'. De GNU find eet ook 'find -type f' btw.
Bij mij werkt het prima onder Slackware (net als find . inderdaad).
Omdat je dan in de problemen komt als er in de huidige dir een file/dir name staat die met '-' begint (probeer maar).Op zondag 06 januari 2002 11:06 schreef grep het volgende:
Waarom is find * niet goed dan?
Bij mij werkt het prima onder Slackware (net als find . inderdaad).
Officieel moet het zelfs 'find . -print' zijn iirc, omdat de originele find eist dat je een actie meegeeft, maar de meeste implementaties van find slikken het wel als je geen actie meegeeft (en vallen dan terug op de default actie, print).
'k heb het geprobeerd en ik begrijp het nu ook. find ziet het file dan als een argument en probeert het te interpreteren.Op zondag 06 januari 2002 17:23 schreef deadinspace het volgende:
[..]
Omdat je dan in de problemen komt als er in de huidige dir een file/dir name staat die met '-' begint (probeer maar).
Officieel moet het zelfs 'find . -print' zijn iirc, omdat de originele find eist dat je een actie meegeeft, maar de meeste implementaties van find slikken het wel als je geen actie meegeeft (en vallen dan terug op de default actie, print).
Thanks, weer wat geleerd !
Pagina: 1