Linux get all directory sizes

Check folder size in Bash

I’m trying to write a script that will calculate a directory size and if the size is less than 10GB, and greater then 2GB do some action. Where do I need to mention my folder name?

# 10GB SIZE="1074747474" # check the current size CHECK="`du /data/sflow_log/`" if [ "$CHECK" -gt "$SIZE" ]; then echo "DONE" fi 

Since this is a popular question — If any beginner is encountering the answers on this question and wants to learn more about what the heck du is and how everyone knows all these commands: You can type man du in your terminal to lookup the du command in the manual. This will display an output which you can view, and will summarize all the flags like -h, -c, -s, -b, -B, —apparent-size, etc. that answers are you suggesting you use. Then, you can decide for yourself how you best want to use du for your specific use case.

8 Answers 8

which will give you a brief output of the size of your target directory. Using a wildcard like * can select multiple directories.

If you want a full listing of sizes for all files and sub-directories inside your target, you can do:

  • Add the argument -c to see a Total line at the end. Example: du -hcs or du -hc .
  • Remove the argument -h to see the sizes in exact KiB instead of human-readable MiB or GiB formats. Example: du -s or du -cs .

With no directory path specified it will default to the current working directory. so du -hs == du -hs . .

if you just want to see the folder size and not the sub-folders, you can use:

You should know that du shows the used disk space; and not the file size.

You can use —apparent-size if u want to see sum of actual file sizes.

--apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like 

And of course theres no need for -h (Human readable) option inside a script.

Instead You can use -b for easier comparison inside script.

But You should Note that -b applies —apparent-size by itself. And it might not be what you need.

-b, --bytes equivalent to '--apparent-size --block-size=1' 

so I think, you should use —block-size or -B

#!/bin/bash SIZE=$(du -B 1 /path/to/directory | cut -f 1 -d " ") # 2GB = 2147483648 bytes # 10GB = 10737418240 bytes if [[ $SIZE -gt 2147483648 && $SIZE -lt 10737418240 ]]; then echo 'Condition returned True' fi 

Источник

Читайте также:  Moc плеер настройка linux

How to Get the Size of a Directory in Linux

Many users run Linux from the command line. However, the command line — sometimes known as the terminal — doesn’t have an intuitive interface for checking disk space in Linux.

This guide shows you how to find the size of a specific directory in Linux from the command line.

Tutorial on how to find directory size linux

  • A system running Linux
  • A command line / terminal window (available by clicking Search, then typing terminal)
  • A user account with sudo or root privileges

Note: In Linux, a directory is the equivalent of a folder in Windows. A directory may have directories inside (called subdirectories), or it may only contain files.

Option 1: Display the Size of a Directory Using the du Command

The du command stands for disk usage. This command is included by default in most Linux distributions.

You can display the size of your current directory by typing du in the command line:

The system should display a list of the contents of your home directory, with a number to the left. That number is the size of the object in kilobytes.

An example of the du command output.

You can add the -h option to make the output more readable:

Readable list of contents of your home directory.

Each entry will start with a number and a letter. The number is the amount of space used, and the letter (usually K, M, or G) indicates Kilobytes, Megabytes, or Gigabytes. For example:

400K – 400 kilobytes 7.3M – 7.3 megabytes 2.2G – 2.2 gigabytes

To find the size of a specific directory different from your current working directory. The du command allows you to specify a directory to examine:

This displays the size of the contents of the /var directory. You may see some entries with an error, as in the image below.

Display the size of a specific directory.

This happens when your user account does not have permission to access a particular directory. Use the sudo or su command to get access privileges:

Note: Some versions of Linux don’t enable sudo by default. You can use the su command to switch to the root user account instead.

To display total disk usage of a particular directory, use the -c command:

Options can be combined. If you wanted to repeat the previous command in human-readable format, enter the following:

You can limit the scan to a certain level of subdirectory by using the max-depth option. For example, to scan only the size of the top directory, use —max-depth=0 :

If you wanted to list only the top directory and the first layer of subdirectories, change —max-depth=1 :

Find the size of the top directory

If you run into trouble or want to explore more options for the du command, enter the following command to display the help file:

Option 2: Get Size of Directory in Linux Using tree Command

By default, the tree command is not included in some versions of Linux. To install it, enter the following:

The tree command displays a visual representation of your directories. It uses lines to indicate which subdirectories belong where, and it uses colors to indicate directories and files.

tree can also be used with options. To display a human-readable size of the current directory’s subdirectories, enter the following:

Читайте также:  Install php apache2 linux

Display disk usage using the tree command.

Like the du command, tree can target a specific directory:

This command takes a few moments since the /var directory has many entries.

The tree command also has a help file, which you can access by entering:

Option 3: Find the Size of a Linux Directory Using ncdu Command

The ncdu tool stands for NCurses Disk Usage. Like the tree command, it is not installed by default on some versions of Linux. To install it, enter the following:

The ncdu utility is an interactive display of your disk usage. For example, enter the following:

Display Disk Usage Using the ncdu command.

In the upper left corner, it displays the current directory being scanned. A column on the left displays the numerical size, a graph of #- signs to indicate the relative size, and the file or directory.

Use the up and down arrows to select different lines. The right arrow will browse into a directory, and the left arrow will take you back.

ncdu can be used to target a specific directory, for example:

For help, press the ? key inside the ncdu interface. To quit, press the letter q .

Note: Learn how to move directories in Linux using the GUI or system commands.

You now have three different options to find the size of a directory in Linux operating systems.

If you want to learn more about directories in Linux, read our article how to rename directories in Linux.

Источник

Get Total Size of a Directory in Linux

In Linux, ls -l would list the files and directories in a particular path, with their names, dates, and sizes (disk usage). The first thing you’ll notice using that command is that the size of directories is always shown as 4096 bytes (or 4,0K if you’re using ls -lh ) even though they contain files that are greater than 4 KB in size. The reason is that ls returns meta-data for the directories, not the actual size.

So what’s the shortest and easiest way to get the size of a directory in Linux, you ask? To get the total size of a directory in Linux, you can use the du (disk-usage) command.

In this article, we’ll take a look at some of the most common usages of the du commands, including but not limited to du -sh , du -ch , and du —max-depth .

Getting Size of Directory in Linux with du

To see the full description and argument list of du command, refer to the man du .

If we type du without any arguments, it will list all the directory names and sizes for the current working directory and all subdirectories recursively:

$ du 2156 ./corpora/state_union 64 ./corpora/names 7624 ./corpora/conll2002 432 ./corpora/toolbox/rotokas ### .  246984 ./corpora 16792 ./tokenizers/punkt/PY3 36028 ./tokenizers/punkt 49420 ./tokenizers 296408 . 

Get Size of the Current Working Directory

To get the size of the current working directory only, and not the subdirectories, we can use du -s or du —summarize :

We can add the -h parameter to get the size in a more human-readable format:

We can also use du with $PATH parameter to get the size of a directory that is located somewhere other than the current working directory:

$ sudo du /var -sh # or "du -sh /var" if you prefer 11G /var 

Note that you would need to use it with sudo privileges for some directories, otherwise you would get a Permission denied error.

Читайте также:  Linux mint recovery menu

Get Size of First-Level Subdirectories

To get size of first-level subdirectories as well as the total size of the path directory:

$ sudo du /var/* -shc 6,1M /var/backups 144M /var/cache 4,0K /var/crash 7,2G /var/lib 4,0K /var/local 0 /var/lock 3,0G /var/log 4,0K /var/mail 4,0K /var/metrics 4,0K /var/opt 0 /var/run 3,8M /var/snap 52K /var/spool 72K /var/tmp 28K /var/www 11G total 

-c or —total returns the total size of the path ( 11G total ). * lists all the first-level subdirectories in the /var/ directory. We can also add —exclude to exclude any directory:

$ sudo du /var/* -shc --exclude=lib 6,1M /var/backups 144M /var/cache 4,0K /var/crash 4,0K /var/local 0 /var/lock 3,0G /var/log 4,0K /var/mail 4,0K /var/metrics 4,0K /var/opt 0 /var/run 3,8M /var/snap 52K /var/spool 72K /var/tmp 28K /var/www 3,2G total 

Note that excluding lib also affects the total size ( 3,2G total ). This is also equivalent of sudo du /var/ -h —exclude=lib —max-depth=1

$ sudo du /var/ -h --exclude=lib --max-depth=1 4,0K /var/mail 52K /var/spool 3,8M /var/snap 4,0K /var/metrics 144M /var/cache 6,1M /var/backups 72K /var/tmp 4,0K /var/crash 3,0G /var/log 4,0K /var/opt 28K /var/www 4,0K /var/local 3,2G /var/ 

Free eBook: Git Essentials

Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!

—max-depth=N will return all subdirectory levels that are equal or less than the number N . Setting —max-depth to 1 returns the first-level, 2 for the second, and so on.

Get Size of All Subdirectories

To recursively get all subdirectories of /var/ , you can use sudo du /var/ -h . Or you can pass a number to the —max-depth that you’re sure is greater than or equal to the max level of subdirectory depth: sudo du /var/ -h —max-depth=999 .

The second option is more of a workaround rather than the most efficient way.

Get Size of Directory in Linux with tree —du -h

tree is a recursive directory listing program that will list directories and files in a tree-like format. Note that tree is not installed by default. For Debian/Ubuntu, we can install the tree by running sudo apt install tree .

After the installation complete, we use the tree command to list names and sizes of all directories and files in a particular path, in a tree-like format:

$ tree /var/www/ --du -h /var/www/ ├── [4.2K] demosite │ └── [ 189] index.html └── [ 15K] html └── [ 11K] index.html 23K used in 2 directories, 2 files 

Conclusion

In this article, we learned how to get directory sizes in Linux. You can use these commands on Linux remote machines, servers, and/or Linux machines with or without GUI.

For most of the cases du command would be sufficient. It has also the advantage of being installed by default. On the other hand, the tree command would provide a more visual and detailed user interface to display almost the same results, making it a powerful alternative for du .

Источник

Оцените статью
Adblock
detector