Tengo un archivo que contiene una lista de archivos que me gustaría saber el tamaño total de los archivos. ¿Hay un comando para hacerlo?
Mi sistema operativo es un Linux muy básico (Qnap TS-410).
EDITAR:
Algunas líneas del archivo:
/ share / archive / Bailey Test / BD006 / 0.tga
/ share / archive / Bailey / BD007 / 1 versión 1.tga
/ share / archive / Bailey 2 / BD007 / example.tga
Respuestas:
Creo que algo como esto funcionaría en busybox:
No tengo el mismo entorno que tú, pero si encuentras problemas con espacios en los nombres de archivo, algo como esto también funcionaría:
Edición 1 :
@stew está justo en su publicación a continuación, du muestra el uso del disco y no el tamaño exacto del archivo. Para cambiar el comportamiento, busybox usa el indicador -a, así que intente:
du -a "$file"
para un tamaño de archivo exacto y compare la salida / comportamiento.fuente
/usr/bin/du: Argument list too long
(casi 80,000 líneas en mi archivo). ¿Su segundo comando me da un aviso una vez que presiono enter, esperando algo más?cat tgafiles.txt | while read file;do du "$file" done | awk '{i+=$1} END {print i}'
. gracias mattiascat tgafiles.txt | while read file;do du "$file";done | awk '{i+=$1} END {print i}'
(es decir, antes de hacerlo).-c
agrega línea "tamaño total";tail -1
toma la última línea (con tamaño total);cut -f 1
corta la palabra "total".fuente
No sé si sus herramientas de Linux son capaces de esto, pero:
Haga, los xargs establecerán el delimitador para que sea un personaje de nueva línea, y du producirá un gran total para usted.
Al mirar http://busybox.net/downloads/BusyBox.html parece que "busybox du" admitirá la opción de total general, pero los "busybox xargs" no admitirán delimitadores personalizados.
De nuevo, no estoy seguro de su conjunto de herramientas.
fuente
xargs: invalid option -- d
-c
ya que xargs hará varias llamadasdu
si la lista de archivos es lo suficientemente larga, produciendo variosdu
totales.Esto es similar a la solución de Mattias Ahnberg. El uso de "leer" evita problemas con nombres de archivo / directorios con espacios. Yo uso en
stat
lugar dedu
obtener el tamaño del archivo. du está obteniendo la cantidad de espacio que está utilizando en el disco en lugar del tamaño del archivo, que podría ser diferente. Dependiendo de su sistema de archivos, un archivo de 1 byte seguirá ocupando 4k en el disco (o lo que sea el tamaño de bloque). Entonces, para un archivo de 1 byte, stat dice 1 byte y du dice 4k.fuente
stat
comando:stat: command not found
stat: applet not found
en este casoAquí hay otra solución al problema:
fuente
du -bc
corre mucho más rápido.Intenta algo como esto:
Para tratar adecuadamente con espacios en caminos:
fuente
find
?find
lugar delfind
binario real .cat docs.txt | xargs -d \\n du -sk | awk '{total+=$1} END{print total}'
fuente