ottobre 8, 2007
Una delle cose belle di linux
… puoi sempre lanciare un comando tipo:
du --max-depth=1 -h | grep M | grep -v , | more
Il primo che capisce a cosa serve (anzi, per cosa l’ho usato), vince una settimana di ricovero in una clinica mentale di fiducia!


18 Commenti







Capire cosa fa ok, ma a cosa di serviva lo ignoro… (ma hai directory con la virgola?)
lo spazio occupato dalle directory di 1° livello (quindi niente sottodir?) che contengono la lettera M…
ma anch’io con la virgola sono in dubbio
l’opzione -v di grep inverte la selezione… nel senso che seleziona il contrario di quello che cerchi…
quindi vuoi vedere tutte le directory che NON contengono la virgola?
giusto?
macchettifumi?
NO! scusa!
grep M ti indica solo le directory con dimensione espressa in Megabayte (se mettevi grep G ti avrebbe dato solo directory con dimensione in Gigabyte)
quindi grep -v , ti dovrebbe adre solo quelle directory che hanno una dimensione senza decimali???
ma certo che non c’hai nulla da fare di meglio!!! (e io con te che cerco di capirci qualcosa…)
Bravo MYNE, c’hai beccato !!! In pratica trovo le directory che hanno contenuto da 10 a 999 MB. Mi serve per capire se ci sono cartelle di siti troppo “ciccione”…
citando l’intro di DOTT: “And now… Let’s CRACKING!”
spezziamo la riga di comando:
1) du –max-depth=1 -h questo mostra la dimensione totale delle directory di primo livello e della directory corrente, in formato “human readable”
2) grep M seleziona le stringhe che contengono il carattere “M”
3) grep -v , elimina le stringhe che contengono il carattere “,”
4) more mostra il risultato
ora, capire cosa volevi fare non è immediato. la mia ipotesi è che ti serviva sapere quanto spazio occupassero le sotto directory di quella corrente. in particolare hai selezionato ESCLUSIVAMENTE quelle la cui dimensione è maggiore di 1MB e minore di 1GB, inoltre hai rimosso i risultati che contenevano il carattere “,”, probabilmente una o più directory che erano grosse alcuni KB o alcuni GB.
alla luce di tutto ciò, non era meglio il seguente comando: du –max-depth=1 -h | grep -e “^[0-9].[0-9]\?M ?
ciao
cacchio! manca il ” finale nel mio ultimo comando (e, vabbè, il “| more”, ma non era il punto importante)
p.s.: voglio la preview dei commenti!!!
SID77> In realtà ho preso quelli da 10 a 999; la virgola mi serviva per eliminare quelli inferiori a 10 MB…
allora non funziona se cambia il locale: in inglese il separatore è “.” non “,”. per fare la ricerca che intendi, indipendentemente dal separatore utilizzato, devi usare
du –max-depth=1 -h | grep -E “^[1-9][0-9]{1,2}M” | more
sfruttando il barbatrucco che, a quanto pare, “du” non riporta valori come 80.5M
@Rouge
ora mi dai del ‘irla: ma se hai una directory con il nome che contiene la “M” (maiuscola), te la mostra anche se è fuori dal range 10/999MB?
Sì; ma la cartella non c’è
‘n si sa mai…
Myne non so se l’hai capito ma ora devi ritirare l’ambito premio… :S
WOW! grazie! sono commosso!
La mia clinica mentale di fiducia è alle Maldive! Quando parto?
Interessante utilizzo…. questa me la segno! Probabilmente avrei usato awk per selezionare il primo “campo” restituito da du -h, la tua soluzione è molto più elegante, la mia è un rimesuglio del famoso UCCS (Ufficio Complicazione Cose Semplici)
Ehhh sid77, mi tiri fuori le espressioni regolari! Sei troppo avanti !!!
Myne> Ho pronti i biglietti, devi solo infilarti la camicietta bianca con le maniche lunghe….
no, è che in realtà sono un ddrrroooga
cmq fino a quanto non è saltata fuori sta storia, non avevo mai notato che “du” non riporta i decimali per dimensioni con parti intere da più di una cifra ._.
Mi sto perdendo via. Oggi un mio collega mi ha chiesto come fare a cambiare dei permessi sul server (linux) dell’ufficio e io: “devi sudare”.
…e come diceva sempre un mio amico, “Sempre meglio sudare, che suprendere”.