Foros del Web » Administración de Sistemas » Unix / Linux »

Obtener el tamaño de un archivo con la ruta en un .txt

Estas en el tema de Obtener el tamaño de un archivo con la ruta en un .txt en el foro de Unix / Linux en Foros del Web. Muy buenas, Tengo un listado .txt de un montón de archivos con sus rutas absolutas, lo que quiero es que me obtenga cuanto ocupa cada ...
  #1 (permalink)  
Antiguo 28/09/2012, 06:43
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Obtener el tamaño de un archivo con la ruta en un .txt

Muy buenas,

Tengo un listado .txt de un montón de archivos con sus rutas absolutas, lo que quiero es que me obtenga cuanto ocupa cada archivo y haga una suma total, pero no se muy bien como contar las líneas del archivo y luego sacar su tamaño (me imagino que con du se podrá pero tendría que indagarlo más porque no encuentro una solución)

A ver si me pueden echar una mano aconsejándome comandos que me puedan servir.

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 28/09/2012, 08:31
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener el tamaño de un archivo con la ruta en un .txt

du o incluso ls pueden hacerlo, y para la suma awk te puede ayudar. Bastaría con hacer un for sobre las líneas del archivo, o quizás hasta eso te lo puedas ahorrar usando xargs.

Intenta hacerlo, y si no sale, pues nos pones por acá lo que llevas hecho :)


Saludos.
  #3 (permalink)  
Antiguo 28/09/2012, 09:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Obtener el tamaño de un archivo con la ruta en un .txt

Lo siguiennte casi responde a todo,
Crea una carpeta y allí pones el archivo de texto y lo renombras a 111 y pones el siguiente script
#!/bin/bash

while read line; do
du -sh "$line" >> 222
done < 111
cat 222 | awk '{print $1 }' > 333

Al ejecutar el script dendre de la carpeta que lo contiene, generará el archivo 222 que tendrá la lista con el tamaño de cada archivo y además creará el archivo 333 que pone en una columna solo los pesos de cada archivo , esto tendrás que pulirlo, pero puedes editqr el archivo , borras las K , abres el archivo con Calk y allí sumas el gran total
  #4 (permalink)  
Antiguo 28/09/2012, 19:18
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Obtener el tamaño de un archivo con la ruta en un .txt

Tengo algo hecho ya, lo malo que me lo dejé en la oficina ajaja a ver si lo re-armo y os lo pongo :D

Gracias
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #5 (permalink)  
Antiguo 28/09/2012, 19:56
 
Fecha de Ingreso: octubre-2011
Mensajes: 166
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Obtener el tamaño de un archivo con la ruta en un .txt

El Script quedaría así
#!/bin/bash
rm 222
while read line; do
du -s "$line" >> 222
done < 111
cat 222 | awk '{ SUM += $1} END { print "Gran Total: "SUM/1000 " Megas"}' >> 222
gedit 222

Como antes, 111 es la lista de las rutas y 222 el archivo final
  #6 (permalink)  
Antiguo 01/10/2012, 01:20
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Obtener el tamaño de un archivo con la ruta en un .txt

Esto es lo que hice yo:

Código:
#!/bin/bash
SOURCE='prueba.txt';
TOTALSIZE=0;
Mb=0;

for line in $(cat $SOURCE); 
	do 
	SIZE=`du -sk $line | cut -f1`;
	TOTALSIZE=`expr $TOTALSIZE + $SIZE`;
	Mb=`expr $TOTALSIZE / 1024`;
	let CONTADOR+=1; 
done
echo "Hay "$CONTADOR" ficheros y ocupan: "$Mb" megabytes";
exit 0
También hice este script para copiar todo el directorio y el contenido en una ruta. Ya que necesito la ruta raíz donde se ubican los ficheros:

Código:
#!/bin/bash
SOURCE='origen.txt';
TARGETDIR='/destino/ficheros/'
CONTADOR=0;

for line in $(cat $SOURCE); 
	do 
	rsync -vR $line $TARGETDIR
	let CONTADOR+=1; 
done
echo "Se han copiado "$CONTADOR" ficheros.";
exit 0
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Última edición por Jask; 01/10/2012 a las 02:56

Etiquetas: bash
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:18.