Sumar el tamaño de bytes de los ficheros script en bash! SOLUCIONADO

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
jeramola
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Lun Jun 11, 2012 7:43 pm

Sumar el tamaño de bytes de los ficheros script en bash! SOLUCIONADO

Mensaje por jeramola »

Script que muestra el tamaño total en bytes de todos los archivos que contiene el directorio actual, excluyendo directorios, subdirectorios y archivos ocultos. SÓLO ARCHIVOS!!

Código: Seleccionar todo

#!/bin/bash
SUMA=0
for ELEMENTOS in `ls -l | grep ^- | sed "s:^\([^ ]*[ ]*\)\{4\}\([0-9]*\).*$:\2:g"`; do
SUMA=$[$SUMA+$ELEMENTOS]
done
echo  "la suma total es: $SUMA"
Última edición por jeramola el Jue Jun 14, 2012 3:56 am, editado 6 veces en total.

Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por mcun »

Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Ayuda script en bash!

Mensaje por neurus »

No veo por qué haría falta un contador. ¿Para contar qué?
A menos que llame contador a la variable a la cual enviar el resultado. Que no sería un contador. Entiendo por tal, una variable que se incrementará o decrementará a intervalos regulares en cada ciclo del bucle. En este caso, el incremento será irregular.

En cualquier caso

Código: Seleccionar todo

#!/bin/bash
#supongo que a esta variable tu profesor la llama contador. 
suma=0;  
for i in `ls -l|awk '{print $5}'`; 
   do 
      suma=`expr $suma + $i` 
#primera opción: muestra la suma en cada ciclo
echo $suma
   done

#segunda opción: muestra la suma total, al final
echo  "la suma total es: $suma"
#tercera opción: envía el resultado a un archivo.
echo $suma > resultado.txt
No usé sed para aislar los números. tú sí deberás usarlo, seguramente, porque estás aprendiendo y tienes que saber cómo se hace. Los que ya sabemos hacerlo, y no estamos locos, optamos por lo más sencillo: awk o cut.

jeramola
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Lun Jun 11, 2012 7:43 pm

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por jeramola »

Les agradezco muchisimo la respuesta, ahora voy a revisar bien. El tema es que el comando awk no me lo enseñaron asi que no puedo ir y decirle "lo hice con awk" Tampoco hicimos nada con print.
Última edición por jeramola el Jue Jun 14, 2012 3:52 am, editado 1 vez en total.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por neurus »

Pero ¿tú nos estás tomando el pelo?

Todo lo que preguntas ya está respondido. El problema ya está resuelto. Hasta lo de awk está aclarado. Lo de la variable también.

¿Estás respondiendo a este hilo, o a algún otro, de otro foro?

jeramola
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Lun Jun 11, 2012 7:43 pm

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por jeramola »

Creo que no lo habìa entendido porque me escribiste con comandos que no me enseñaron. Ahora me doy cuenta que puede estar bien. muchas gracias
Última edición por jeramola el Jue Jun 14, 2012 3:54 am, editado 1 vez en total.

Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por mcun »

luego nos comentas la nota que saca neurus en el examen XD
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por cerenkov »

A algunos les podrá parecer fuerte como neurus contesta ciertos posts pero es lo que provoca.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por neurus »

cerenkov escribió:A algunos les podrá parecer fuerte como neurus contesta ciertos posts pero es lo que provoca.
En realidad, como también lo señalaste en el hilo "el post del año", voy a hacer un descargo, por única vez:

no es que pierda los estribos. ¿Qué voy a hacer, pegarle a la pantalla?. Incluso, en aquel hilo sobre Opennic, me pareció un hallazgo señalar la existencia de una división brainless, dedicada a publicitar los servicios de Opennic. Pero bueno, no siempre se aprecia mi sentido del humor -que, eso sí lo admito- es bastante ácido.

La razón por la cual muchas veces respondo de un modo que puede resultar chocante, alguna vez la manifesté en un hlo llamado "respuestas de mala gana": vivimos bajo reglas. Y eso no es falta de libertad. La libertad sólo es posible respetando algunas reglas. Quebrantar cualquier regla implica una penalización. Por supuesto, hay -o debería haber- escalas en esas penalizaciones. Si matas a un hombre te condenan a cadena perpetua. Si robas, pueden ser meses o años de prisión. Si cruzas un semáforo en rojo, una multa.

La interacción social tiene, también, sus propias reglas. Las penalizaciones por violarlas, por supuesto, no pueden ser equiparables a las que se imponen en casos de delitos. Pero si te tiras un pedo en público, se te penalizará con miradas torvas o carcajadas estruendosas. Y si te empeñas en hacer el tonto, bueno, la penalización será que te traten como tonto. (A quien le interese, puede leer "La risa", de Bergson).

Ese suele ser el caso en estos foros. Mucha gente considera que, puesto que hay un relativo anonimato, puede prescindir de reglas de convivencia mínimas. Pongo como ejemplo a este usuario, no por cargar las tintas sobre él -el "altercado" ya terminó- sino por comodidad, porque estoy respondiendo aquí. Hay decenas de otros hilos que hasta podrían servir mejor como ejemplo.

Pero veamos: el usuario enuncia una duda. Se le responde y, en lugar de tomarse el trabajo de entender la respuesta, se apresura a señalar que aún no pudo resolverlo. Y hasta remarca cuestiones como "no me enseñaron a usar awk", cuando en mi propia respuesta digo "tienes que reemplazar awk por sed", habiendo visto que esa parte él mismo ya la había resuelto. Insisto: no se trata de cargar las tintas sobre este usuario, que es de los pocos que entendió al primer ladrido.

Y es en esos casos cuando busco que mi respuesta, por lo menos, moleste. Si formulas una pregunta en un foro, es de suponer que al menos te tomarás el trabajo de leer las respuestas. Cuando ello no ocurre, tiene que haber una penalización. Mi forma de penalizarlos es esta: tomarles el pelo, preguntarles si se les cayó el cerebro, etc.

Y no tiene que ver con el desconocimiento que un usuario pueda tener. Jamás me burlo del hecho de que alguien esté aprendiendo. Me burlo de casos como este, que por esa sola razón me sirve de ejemplo: el propio usuario reflexionó "en voz alta" en su post. Y mientras escribía se iba dando cuenta: resulta que si reemplazo awk por sed, y luego reemplazo expr por como me enseñaron a operar, tengo todo el script hecho. ¡Caramba! ¿será por esto que inventamos la escritura hace ocho mil años? Mira las cosas que pueden aprenderse leyendo, quién lo hubiera dicho...

jeramola
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Lun Jun 11, 2012 7:43 pm

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por jeramola »

Jejej si la verdad que me fui dando cuenta a medida que escribía jejeje :cry:
Última edición por jeramola el Jue Jun 14, 2012 3:52 am, editado 1 vez en total.

Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1829
Registrado: Dom Oct 10, 2004 7:00 am

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por neurus »

La variable $suma no se incrementa sola. Hay que incrementarla enviando a ella una operación.
En mi script, se hace así: $suma=` expr $suma + $i`, donde $suma es el "contador", y $i es el índice del bucle.
En tu script, no estás enviando la operación a ninguna parte, por lo cual en cada ciclo, el comando que estás enviándole al sistema es un número: 0 (el contenido de $suma) + el índice $i.

Encabeza el script así: #!/bin/bash -x . Eso te permitirá saber exactamente qué hace el script mientras opera.

blackman
Forista Nuevo
Forista Nuevo
Mensajes: 17
Registrado: Mié Oct 05, 2011 12:37 am
Contactar:

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por blackman »

Aunque tarde, a ver si esto te sirve:

suma=0; for file in $(ls -l); do if [[ -f $file ]]; then suma=$(( $suma+$(du -b $file | awk '{print $1}') )); fi; done; echo $suma

Un saludo
http://serinto.com - Linux y Drupal para todos

jeramola
Forista Nuevo
Forista Nuevo
Mensajes: 5
Registrado: Lun Jun 11, 2012 7:43 pm

Re: Sumar el tamaño de bytes de los ficheros script en bash!

Mensaje por jeramola »

Hola y gracias por la respuesta.

El ejemplo que me dieron al principio cuando lo probé no funcionaba, se ve que no tengo instalado el programa expr??.

De todos modos hoy con un poco de ayuda del profesor lo hice.

agrego el script al primer post.

Salu2.

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje