Hoe kan ik in een Unix systeem een overzicht op het scherm krijgen (in bv een dir formaat) van alle bestanden van een bepaalde eigenaar en daarbij de totale grootte van alle getoonde bestanden. Die besatanden staan mogelijk verspreid over het gehel systeem (gehele schijf). Ik kan inloggen als su.
Ik heb wel gezocht ook met man. Maar man find en man du kende ik niet. man dir wel maar daar was niets te vinden. Thnx. Zal deze commando's eens even gaan bekijken.
OK, ik kan nu wel alle bestanden van een bepaalde eigenaar op het scherm krijgen met "find / -user username" maar ik krijg het niet voor elkaar om de totale grootte van die getoonde bestanden te zien. Met du kan ik wel een overzicht produceren van bepaalde dirs maar eigenlijk zoek ik dus de combinatie van die twee. Dus alle bestanden met eigenaar x met daarbij de TOTALE grootte van alle bestanden (eventueel ook nog elk bestand of dir afzonderlijk).
OK, ik kan nu wel alle bestanden van een bepaalde eigenaar op het scherm krijgen met "find / -user username" maar ik krijg het niet voor elkaar om de totale grootte van die getoonde bestanden te zien. Met du kan ik wel een overzicht produceren van bepaalde dirs maar eigenlijk zoek ik dus de combinatie van die twee. Dus alle bestanden met eigenaar x met daarbij de TOTALE grootte van alle bestanden (eventueel ook nog elk bestand of dir afzonderlijk).
[ Voor 59% gewijzigd door Verwijderd op 29-07-2003 15:38 ]
Verwijderd
Je kan met find een -exec {} optie meegeven. In die exec kun je een commando opgeven die hij voor elk bestand moet uitvoeren. Bijvoorbeeld "ls --size" of iets dergelijks. Ik zou zeggen, bedenk iets leuks.
.
Verwijderd
ga naar de dir van een gebruiker.. en ram #du -sm
Krijg de grote van de dir waar je in zit, + subdirs.. toch?
Krijg de grote van de dir waar je in zit, + subdirs.. toch?
Met | (pipe-teken) kan je commando's aan elkaar koppelen. De uitvoer van commando 1 wordt dan doorgegeven aan commando twee.Verwijderd schreef op 29 juli 2003 @ 14:53:
OK, ik kan nu wel alle bestanden van een bepaalde eigenaar op het scherm krijgen met "find / -user username" maar ik krijg het niet voor elkaar om de totale grootte van die getoonde bestanden te zien.
Je krijgt dan iets als:
code:
1
| find <argumenten> | du <argumenten> |
De optie -exec na de find kreeg ik zelf niet voor elkaar, maar dat zou ook aan mij kunnen liggen.
Wat jij wil werkt niet omdat du geen invoer accepteert.Met | (pipe-teken) kan je commando's aan elkaar koppelen. De uitvoer van commando 1 wordt dan doorgegeven aan commando twee.
Bij exec moet je altijd goed opletten dat je de accolades en de punt-komma escaped door er een slash voor te zetten. DusDe optie -exec na de find kreeg ik zelf niet voor elkaar, maar dat zou ook aan mij kunnen liggen.
code:
Anyway, je kan find alleen de grootte van een bestand laten zien en die dan weer door awk laten optellen. Ik heb ook de optie gebruikt om alleen regular files te zien omdat je de 'grootte' van een directory niet kan vergelijken met de grootte van een file. En als je het voor root wil doen heb je ook last van alle block files etc.1
| find . -exec echo \{\} \; |
Dus:
code:
1
| find . -type f -user naamvanuser -printf "%s\n"|awk '{size += $1} END {print size}' |
Als een programma geen invoer vanaf stdin accepteert, maar wel als argumenten kan je het tooltje xargs eens proberen:
Dit voert dan hetzelfde uit als:
code:
1
| echo file1 file2 | xargs du |
Dit voert dan hetzelfde uit als:
code:
1
| du file1 file2 |
En það besta sem guð hefur skapað, er nýr dagur - Sigur Rós
Verwijderd schreef op 29 July 2003 @ 14:53:
Ik heb wel gezocht ook met man. Maar man find en man du kende ik niet. man dir wel maar daar was niets te vinden. Thnx. Zal deze commando's eens even gaan bekijken.
OK, ik kan nu wel alle bestanden van een bepaalde eigenaar op het scherm krijgen met "find / -user username" maar ik krijg het niet voor elkaar om de totale grootte van die getoonde bestanden te zien.
code:
1
| find . -name username -printf '%p' | du |
zou aardig in de buurt moeten komen.
ls -lR /
find /
du -a /
find /
du -a /
If you choose to criticise you choose your enemies
Vergeet de -A niet bij ls zodat je ook de verborgen bestanden ziet dus:
ls -lRA /
[ Voor 3% gewijzigd door Buffy op 31-07-2003 11:24 ]
That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)
Verwijderd
Ik wil niet heel vervelend doen, maar kun je niet quota's installeren ? - dan kun je met 'repquota' gewoon percies zien wat jij wilt.Verwijderd schreef op 29 July 2003 @ 14:47:
Hoe kan ik in een Unix systeem een overzicht op het scherm krijgen (in bv een dir formaat) van alle bestanden van een bepaalde eigenaar en daarbij de totale grootte van alle getoonde bestanden. Die besatanden staan mogelijk verspreid over het gehel systeem (gehele schijf). Ik kan inloggen als su.
offtopic:
en als mooie bijkomstigheid kun je die mensen ook nog 'binden' aan een aantal mb's/files
en als mooie bijkomstigheid kun je die mensen ook nog 'binden' aan een aantal mb's/files
[ Voor 22% gewijzigd door Verwijderd op 30-07-2003 17:20 ]
code:
1
2
3
4
5
6
7
| i=o
k=`find / -username <user> -exec du {} | awk -F\ '{print $1}'`
for j in $k
do
i=`expr $i + $j`
done
echo $i |
zo ongeveer ..
[ Voor 13% gewijzigd door pjottum op 31-07-2003 11:01 ]
I have usernames older than you.
zoals novalue schreef.
Zorgen dat je OS met userquota kan omgaan (evt kernel rebuilden met option quota) heeft idd als voordeel dat je op elke moment een live overzicht kan krijgen van het totaal aan diskusage van elke user. Je kunt per filesystem aangeven of je userquota/groupquota wilt enablen.
Zorgen dat je OS met userquota kan omgaan (evt kernel rebuilden met option quota) heeft idd als voordeel dat je op elke moment een live overzicht kan krijgen van het totaal aan diskusage van elke user. Je kunt per filesystem aangeven of je userquota/groupquota wilt enablen.
Waarom zo moeilijk als find | du hetzelde doet ??pjottum schreef op 31 juli 2003 @ 11:01:
code:
1 2 3 4 5 6 7i=o k=`find / -username <user> -exec du {} | awk -F\ '{print $1}'` for j in $k do i=`expr $i + $j` done echo $i
zo ongeveer ..
Verwijderd
Doe eens find | du en du en kijk eens wat het verschil is (hint: none)? En jeroene, waarom doe je in het voorbeeld exec gebruiken en als uiteindelijke voorbeeld weer niet? Als je consequent was geweest had het er zo uitgezien:
find / -type f -user lp -exec du \{\} \;
Ik heb alleen een voorbeeldje laten zien met -exec omdat cowgirl melde dat het haar nooit gelukt was om -exec aan de praat te krijgen.En jeroene, waarom doe je in het voorbeeld exec gebruiken en als uiteindelijke voorbeeld weer niet?
Overigens zie ik nu dat zowel mijn versie als de jouwe beide niet doen wat er gevraagd wordt. Die van jou laat alleen de bestanden en de grootte zien, die van mij alleen de totale grootte en de TS wilde een combinatie.
Ik gebruikte zelf overigens geen -exec omdat je daarmee in de problemen kan komen als iemand heel veel files heeft. De maximale lengte van de commandline is weliswaar erg groot, maar als je met find een hele HD af gaat dan heb je hem eerder bereikt dan je denkt.
Wordt het iets als:
code:
Voor 'eenmalig' gebruik is het leuk, maar als je het regelmatig wil doen kan je inderdaad beter quota's gaan gebruiken zoals anderen als voorstelden.
1
| find . -type f -user naamvanuser -printf "%s %p\n"|awk '{size += $1}{print} END {print "Totaal: " size " bytes"}' |
Pagina: 1