Linux/Unix Shell Scripting - Listado de carpetas mayores que cierto tamaño pasado por parámetro

 
Vista:
sin imagen de perfil

Listado de carpetas mayores que cierto tamaño pasado por parámetro

Publicado por Mario (2 intervenciones) el 04/05/2017 22:40:17
Buenas,

soy nuevo en el foro y en la programación en general. Estoy haciendo unos ejercicios para aprender bash, pero no hay forma humana de que haga lo que me pide el enunciado.

Copio textualmente:

Crea un script que liste todas las carpetas de un directorio pasado por parámetro cuyo
tamaño en KB sea mayor que el pasado al script en otro parámetro.


Tengo lo siguiente, aunque he probado de mil formas distintas y nada:

#!/bin/bash
ls $1 | find -size +$2 -type d


Agradezco mucho cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Listado de carpetas mayores que cierto tamaño pasado por parámetro

Publicado por xve (309 intervenciones) el 04/05/2017 23:22:56
Hola Mario, la instrucción seria algo así para carpetas de mas de 10Mb:

1
find /home/ -size +10M -type d

Con las variables seria así:

1
find $1 -size $2 -type d
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Listado de carpetas mayores que cierto tamaño pasado por parámetro

Publicado por Mario (2 intervenciones) el 04/05/2017 23:37:16
Hola xve,

muchas gracias por tu tiempo y por tu respuesta.

Desgraciadamente es algo que había probado anteriormente, y si pongo 5kb saca los nombres de las carpetas por pantalla, pero a partir de 8kb, deja de sacarlas, y las carpetas tienen bastante más de 7kb, aproximadamente 700Mb cada una.

Por lo tanto, no se si estoy ejecutando mal el script, o por el contrario, dicha orden no funciona como nosotros esperamos.


Con tu respuesta, ahora tengo esto en el script:

#!/bin/bash
find $1 -size +$2 -type d


De todas formas, muchas gracias por tu respuesta.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Listado de carpetas mayores que cierto tamaño pasado por parámetro

Publicado por xve (309 intervenciones) el 05/05/2017 15:46:52
Hola Mario, creo que tu problema esta en que 7kb no lo puedes poner!!!

segun la ayuda del comando find:
-size n[cwbkMG]
File uses n units of space, rounding up. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Listado de carpetas mayores que cierto tamaño pasado por parámetro

Publicado por Tom (361 intervenciones) el 05/05/2017 15:02:07
Algo así ?
1
2
3
4
5
6
7
8
SIZE_IN_KB=19
find $1 -type d -exec du -sk {} \; | while read SZ NAME
do
  if [ $SZ -gt $SIZE_IN_KB ]
  then
     echo "$NAME -> $SZ KB"
  fi
done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar