Search code examples
linuxbashunixdiskspace

Measure disk space of certain file types in aggregate


I have some files across several folders:

/home/d/folder1/a.txt
/home/d/folder1/b.txt
/home/d/folder1/c.mov
/home/d/folder2/a.txt
/home/d/folder2/d.mov
/home/d/folder2/folder3/f.txt

How can I measure the grand total amount of disk space taken up by all the .txt files in /home/d/?

I know du will give me the total space of a given folder, and ls -l will give me the total space of individual files, but what if I want to add up all the txt files and just look at the space taken by all .txt files in one giant total for all .txt in /home/d/ including both folder1 and folder2 and their subfolders like folder3?


Solution

  • This will do it:

    total=0
    for file in *.txt
    do
        space=$(ls -l "$file" | awk '{print $5}')
        let total+=space
    done
    echo $total