2010-08-28 5 views
6

Estoy tratando de obtener el tamaño de los directorios de nivel superior en el directorio actual (en Solaris). Así que estoy conectando du grep y quiero hacer coincidir solo aquellas líneas que tienen una sola barra hacia adelante, es decir. los directorios de nivel superior.¿Cómo grep para una línea que contiene como máximo una barra diagonal?

Algo así como:

du -h | grep -e <your answer here> 

pero nada de lo que tratan las obras. Ayuda apreciada!

+0

Considere la posibilidad de problemas similares la próxima vez http://unix.stackexchange.com ... – maxschlepzig

Respuesta

5
grep -e '^[^/]*/[^/]*$' 

Tenga en cuenta que esto coincide con las líneas que tienen exactamente una (no como máximo una) barra, pero que debería estar bien para su uso.

Usted también podría probablemente hacer algo con el interruptor -s

du -hs */ 
+0

Sí, ambos funcionan, gracias. Aunque con grep, la opción -v dada a continuación es un poco más fácil de recordar ;-) – David

1

Esto no responde a su pregunta exactamente, pero ¿por qué no le preguntas gdu de hacer eso para usted?

gdu --max-depth=1 

Si realmente quiere ir a la forma grep, ¿qué tal esto?

du -h| grep -v '/.*/' 

Esto filtrará líneas con dos o más barras, dejándole con los que tienen uno o cero.

+0

No tiene gdu en Solaris:/El grep funciona, gracias. – David

+0

@David: Creo que 'du' tiene un interruptor similar –

3

También puede coincidir con las cosas que no desee con la opción -v:

ptimac:Tools pti$ du | grep -v '/.*/' 
22680 ./960-Grid-System 
137192 ./apache-activemq-5.3.0 
23896 ./apache-camel-2.0.0 
386816 ./apache-servicemix-3.3.1 
251480 ./apache-solr-1.4.0 
345288 ./Community Edition-IC-96.SNAPSHOT.app 

(Revisé la página del manual Solaris primera ahora ;-)

Hay otras formas en sistemas GNU a la piel ese gato sin el uso de expresiones regulares:

find . -d1 

encuentra todos los archivos/carpetas a una profundidad de 1

y un comando que utilizo a menudo para limpiar casa disco es:

du -d1 

o (y esto debería funcionar en Solaris demasiado)

du | sort -n 

que me muestra los directorios más grandes dondequiera que se encuentren por debajo de la directorio actual.

+0

y luego lo canaliza a' xargs gdu --max-depth = 0' –

+0

Sí, el grep -v funciona, ¡salud! du | ordenar -n también es útil. – David

0
du --max-depth=1 -h 
+0

No - opción de máxima profundidad para du en Solaris: / – David

Cuestiones relacionadas