Get total files size from a file containing a file list
I have a file containing a list of files that I would like to know the total files size. Is there a command to do so?
My OS is a very basic linux (Qnap TS-410).
EDIT:
A few lines from the file:
/share/archive/Bailey Test/BD006/0.tga
/share/archive/Bailey/BD007/1 version 1.tga
/share/archive/Bailey 2/BD007/example.tga
I believe something like this would work in busybox:
du `cat filelist.txt` | awk '{i+=$1} END {print i}'
I don't have the same environment as you, but if you encounter issues with spaces in filenames something like this would work too:
cat filelist.txt | while read file;do
du "$file"
done | awk '{i+=$1} END {print i}'
Edit 1:
@stew is right in his post below, du shows the disk usage and not the exact filesize. To change the behavior busybox uses the -a flag, so try: du -a "$file"
for exact filesize and compare the output/behavior.
du -c `cat filelist.txt` | tail -1 | cut -f 1
-c
adds line "total size";tail -1
takes last line (with total size);cut -f 1
cuts out word "total".
I don't know if your linux tools are capable of this, but:
cat /tmp/filelist.txt |xargs -d \\n du -c
Do, the xargs will set the delimiter to be a newline character, and du will produce a grand total for you.
Looking at http://busybox.net/downloads/BusyBox.html it seems that "busybox du" will support the grand total option, but the "busybox xargs" will not support custom delimiters.
Again, I'm not sure of your toolset.