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).-cagrega línea "tamaño total";tail -1toma la última línea (con tamaño total);cut -f 1corta 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-cya que xargs hará varias llamadasdusi la lista de archivos es lo suficientemente larga, produciendo variosdutotales.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
statlugar deduobtener 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
statcomando:stat: command not foundstat: applet not founden este casoAquí hay otra solución al problema:
fuente
du -bccorre mucho más rápido.Intenta algo como esto:
Para tratar adecuadamente con espacios en caminos:
fuente
find?findlugar delfindbinario real .cat docs.txt | xargs -d \\n du -sk | awk '{total+=$1} END{print total}'fuente