Using –exclude with the du command

This is probably something basic but I’m not able to make it work. I’m trying to use DU to get a total size of files minus certain directories. I need to exclude one specific directory called uploads but not every directory called uploads. For example, my file structure looks a bit like this:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

I can run the following command:

du -ch --exclude=uploads*

and it gives me the file size minus all the “uploads” directories. However, in trying to exclude certain directories (and all its sub-directories) I fail. I’ve tried variations of:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

but can’t seem to figure it out. How do I exclude a specific directory?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You’ve almost found it 🙂

du -ch --exclude=./relative/path/to/uploads

Note no asterisk at the end. The asterisk means all subdirectories under “upload” should be omitted – but not the files directly in that directory.

Method 2

To exclude multiple directories, just pass the –exclude flag again.

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude

Method 3

Awesome, to skip the virtual file systems do this:

du -hsx --exclude=/{proc,sys,dev,run} /*

Method 4

If you have to be on macOS, you install GNU Coreutils with the following command.

brew install coreutils

Most of the commands installed by Coreutils are prefixed by g, since they have a BSD namesake preinstalled on macOS. Then you can do the following.

gdu --exclude=Microsoft /Library/Fonts/

Method 5

To exclude multiple folders

du -ch --exclude={path/to/folder1,path/to_folder2/,...,}

Method 6

Just adding a Mac example

du -skI "Downloads" -I "Caches" -I "Logs" -I "OneDrive" .

I do not see a way to use the -I with a path, so for example, I haven’t gotten

du -skI "Downloads" -I "Caches" -I "Logs" -I "OneDrive" -I "Library/Application Support"  .

to work. May be possible, but I haven’t gotten it yet.

Method 7

To get the total size of files in files/ excluding all sub-directories

du -ch path/to/files --exclude=path/to/files/*/*


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x