BULMA Bulma amb el projecta Defective by Desing
Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(02/09/2010 20:12:57)
    
Google


En bulma.net
En internet
Script en bash para saber el tamaño real de los archivos de un directorio. (10322 lectures)
Por Fco. Javier M. C.
ElectronD (http://www.islacom.com)
Creado el 15/01/2009 15:10 modificado el 15/01/2009 15:10

Seguramente habrá otra manera más sencilla de hacerlo. Si lo hay lo desconozco. Después de mucho tiempo de buscar he conseguido escribir este pequeño script que a mi me ayuda y quiero compartirlo con la gente de Bulma. Espero que también os sea útil.

Pagina1/1

#!/bin/bash

# ------------------------------------------------------------------------------------------------
# Script creado por: Fco. Javier M. C. <fcojavmc@todo-redes.com> bajo licencia GPL 3 ó posterior.
#
# Devuelve, el bytes, el tamaño total de todos los archivos de la ruta especificada y de
# sus subdirectorios.
#
# El espacio real ocupado por cada archivo y directorio varía en función del sistema de archivos.
# En GNU/Linux existe el comando 'du' para este propósito.
# ------------------------------------------------------------------------------------------------

declare -i t_archivo_total=0
declare -i t_archivo=0
declare -i contador_archivos=0


# Revisa que se haya pasado una ruta correcta como parámetro.
if [ $# -ne 1 ]; then
echo "Tiene que especificar una ruta como parametro."
exit
fi

if [ -d "$1" ]; then
# Cambiamos a la ruta especificada.
cd "$1"
else
echo "La ruta especificada no es valida."
exit
fi

# Localiza todos los archivos y aumenta el contador con el tamaño individual de cada archivo.
for t_archivo in `ls -lR | grep -v ^d | awk '{print $5}'`; do

t_archivo_total=$((t_archivo_total + t_archivo))
contador_archivos=$((++contador_archivos))

done


if test $contador_archivos -eq 0; then
echo "No hay archivos en la ruta especificada."
elif test $contador_archivos -eq 1; then
echo $t_archivo_total "bytes en" $contador_archivos "archivo."
else
echo $t_archivo_total "bytes en" $contador_archivos "archivos."
fi


# ------------------------------------------------------------------------------------------------

Imprimir
Version para
imprimir

Imprimir
Version
PDF
Comentarios
1.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 15:46, #43478)
  Por: Anónimo
du -ch -> Todos los directorios (sin archivos)
du -csh -> La carpeta desde la que hacemos la pregunta
du -h -> Archivos y directorios en cantidades entendibles por los humanos.
du ->todo en bytes

 
2.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 16:10, #43479)
  Por: Anónimo
¿Estás seguro de lo que dices?

 
3.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 16:33, #43480)
  Por: Patricio León (http://www.patricioleon.cl)
Yo también uso el comando du es mucho mas sencillo que todo este script,

 
4.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 18:02, #43481)
  Por: Anónimo
du -sh /ruta/del/directorio

 
5.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 19:01, #43482)
  Por: ElectronD
Todos los que proponeis 'du' veo primero que no habeis probado el 'script' ni comparado resultados. Voy a ver si os puedo mostrar cual fue mi problema y el motivo de la existencia de este 'script':

Ejemplo: Directorio con sólo 2 archivos

archivo1.txt 33 bytes
archivo2.txt 813 bytes

Resultado:
Salida del script: 846 bytes en 2 archivos.

Salida de 'du -ch' y 'du -csh':
20K .
20K total

Salida de 'du -h' y 'du -sh':
20K .


¿Está un poquito más claro ahora?

Saludos.

 
6.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (16/01/2009 10:21, #43485)
  Por: Kiko Piris
Sí (aunque parece que no para todo el mundo ;).

Lo que encuentro un poco “confuso” es el título del artículo :) (para saber cuanto ocupan sirve precisamente du ;).

Gracias por el script :)

 
7.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (16/01/2009 11:44, #43486)
  Por: josemaX (http://www.linuxenclase.org)
Esto es porque du te estima lo que ocupan los archivos en el sistema de archivos (dependiendo del tamaño del bloque), no su tamaño, con lo cual pienso que para el título del artículo, el resultado correcto es el de du (cuanto ocupan los archivos) mientras que el script da el tamaño de los mismos (aunque ocupan mas en el fs).

Para que nadie te diga nada mas sobre du creo que el título debería cambiarse por "Script para saber el tamaño real de los archivos de un directorio"

Saludos.


 
8.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (16/01/2009 11:51, #43487)
  Por: ElectronD
Ok. Oido cocina. Si así se entiende mejor, pues cambiado :)

Gracias.

Un saludo.

 
9.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (15/01/2009 20:06, #43483)
  Por: Anónimo
du -hs /directorio/*

 
10.  Re: Script en bash para saber cuánto ocupan los archivos de un directorio. (16/01/2009 00:34, #43484)
  Por: Anònim
Yo uso: alias grandote='du -sk ./* ./.??* | sort -rn | head' el -sk lo puedes sustituir por -sm -sg seguh lo que necesites

 
11.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (18/01/2009 10:06, #43488)
  Por: H (http://h.says.it/)
Está interesante :)

Te apoyo un poco la didáctica, vendría bien comentar lo que hace la linea clave:
ls -lR | grep -v ^d | awk '{print $5}'

Lee el directorio de forma que pide los datos entrando en los subdirectorios, quita de la cuenta los directorios porque comienzan con d y toma la columna 5, la de los tamaños.

Luego en el loop va tomando la linea 5 y sumando tamaño e incrementando el contador de ficheros.

un saludo :)

 
12.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (18/01/2009 10:13, #43489)
  Por: ElectronD
Muchas gracias por tu comentario. Efectivamente esto es lo que hace. Buen análisis. Un saludo.

 
13.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (18/01/2009 21:24, #43490)
  Por: iarenaza (http://www.escomposlinux.org/iarenaza/)
En realidad esta línea:

ls -lR | grep -v ^d | awk '{print $5}'

la puedes escribir sin el grep, ya que awk te permite usar expresiones regulares para indicar sobre que líneas de entrada quieres aplicar las acciones. Algo como:

ls -lR | awk '/^[^d]/ {print $5 }'

es equivalente. Sin embargo, el filtro debería ser '^-', para tener en cuenta sólo los ficheros regulares (por si hay enlaces simbólicos, sockest, ficheros de dispositivo, etc. en los cuales no tiene sentido hablar de cuanto ocupan). Así que nos quedaría (si no queremos tener en cuenta los ficheros que empiezan por '.'):

ls -lR | awk '/^-/ {print $5 }'

Saludos. Iñaki.

 
14.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (19/01/2009 00:31, #43491)
  Por: ElectronD
Gracias por tu comentario. En realidad el 'script' puede modificarse a voluntad. Hasta estaba pensando incluso en utilizar 'getopts' de bash para parsear los parámetros y utilizar -R para hacer la búsqueda de archivos recursiva o no, etc. El sistema puede dar mucho juego.

Un saludo.

 
15.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (25/01/2009 21:02, #43494)
  Por: Juan Galiana (http://blogs.ua.es/jgaliana)
Usando la idea de Iñaki, simplemente bastaría con:
t=0; for i in `ls -lR | awk '/^-/ {print $5 }'`; do let t+=i; done; echo $t;
Saludos

 
16.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (25/01/2009 21:06, #43495)
  Por: Juan Galiana (http://blogs.ua.es/jgaliana)
Con la salida idéntica al script: shell$ t=0; f=0; for i in `ls -lR | awk '/^-/ {print $5 }'`; do let t+=i; let f+=1; done; echo $t bytes en $f archivos; 7101 bytes en 5 archivos Un Saludo

 
17.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (05/02/2009 14:08, #43496)
  Por: Anónimo (http://www.infogchu.com.ar)
muy buen scrip me ha sido de mucha utilidad, muchas gracias hermano

 
18.  Re: Script en bash para saber el tamaño real de los archivos de un directorio. (17/02/2009 19:31, #43499)
  Por: Anónimo
Usa el treesize para linux/unix ... es la mejor solución Saludos http://sourceforge.net/projects/treesize

 
GRACIAS
Distribuciones Universal
Por el servidor
Dpto. de Matematicas e Informatica
Calificacion
**00
Vots: 0
Danos tu opinion:
**** Excelente
***0 Muy Bueno
**00 Bueno
*000 Regular
0000 Malo
SECCIONES
Noticia
Breve
Truco
Enlace
Participa
Proyecto
Articulo
Webbulma
Manoletada :-)
Seguridad
Modificado: 17/2/2009 19:31:51 | Tiempo Total: 0.047 segs | Kernel: Linux - i686 - 2.6.26-1-686 | Last boot: 02/09/2010 20:21 CEST
Powered by Apache    MySQL    PHP    Gimp