目录或文件夹可以包含多个文件和目录。这些多个文件和目录占用了一些磁盘空间,并且具有一定的大小。但是当我们列出文件和目录时,我们看到目录大小被列为4096字节或4KB。这是不包含文件和目录大小的目录标准大小。那么如何获得目录或文件夹的大小及其内容呢?
使用du命令获取目录大小
这个 杜 命令用于获取文件和目录的磁盘使用情况。du的名字来自于 磁盘使用率 “. du命令为不同的情况提供了许多特性。默认情况下,du命令以递归方式列出所有文件和目录的大小。由于递归行为,这会产生大量的输出。
du
![图片[1]-在Linux中如何获得目录/文件夹的大小?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2021/01/linuxtect_image.png)
获取当前工作目录大小
当前工作目录的大小可以通过du命令添加-s和-h选项来显示。默认情况下,du命令递归列出所有文件和目录的大小。但是-s选项用于显示当前工作目录的总大小或摘要大小。
du -sh
输出如下所示,该点用于指定当前工作目录。在本例中,当前工作目录大小为185MB。
185M .
或者,可以使用glob操作符列出当前工作目录的所有文件和目录大小,如下所示。
du -sh *
输出如下。
4,0K data1 4,0K data2 4,0K data3 4,0K data4 4,0K data5 4,0K Desktop 4,0K Documents 4,0K Downloads 0 file1 0 file2 0 file3 0 file4 4,0K Music 0 myfile 4,0K myfolder 0 mylink 4,0K names.txt 0 newfile 11M nmap-7.91.tar.bz2 452K Pictures 4,0K Public 4,0K read_line_by_line.sh 4,0K sample.txt 20K Templates 4,0K test 0 text.txt 4,0K thinclient_drives 4,0K userinput.py 4,0K Videos 8,0K year
获取指定的目录大小
可以指定特定的目录或路径以获取其大小。只需提供du命令的路径。在下面的示例中,我们将获得用户ismail的主目录的大小。
du -csh /home/ismail
输出如下。
185M /home/ismail185M total
获取特定级别的目录大小
默认情况下,du命令以递归方式工作,列出并添加指定目录的所有子文件和文件夹大小。但是–max depth选项可用于指定要列出的目录的级别。例如–max depth=1用于列出目录的第一级大小。
du -h --max-depth=1 /home/ismail
输出如下。
91M /home/ismail/.cache 452K /home/ismail/Pictures 4,0K /home/ismail/data2 31M /home/ismail/.mozilla 4,0K /home/ismail/data4 4,0K /home/ismail/Desktop 4,0K /home/ismail/Videos 4,0K /home/ismail/Downloads 7,1M /home/ismail/.oh-my-zsh 4,0K /home/ismail/data5 4,0K /home/ismail/thinclient_drives 4,0K /home/ismail/Documents 4,0K /home/ismail/data1 348K /home/ismail/.config 20K /home/ismail/.ssh 4,0K /home/ismail/Music 46M /home/ismail/.local 4,0K /home/ismail/data3 20K /home/ismail/Templates 16K /home/ismail/.gnupg 8,0K /home/ismail/year 4,0K /home/ismail/Public 4,0K /home/ismail/myfolder 185M /home/ismail
按目录大小排序
目录大小的另一个流行用例是根据目录大小对其进行排序。默认情况下,目录和大小按其名称的字母顺序列出。但是我们可以使用sort命令根据目录的大小对其进行排序。
du -ch /home/ismail/* | sort -rh
输出如下。
11M total 11M /home/ismail/nmap-7.91.tar.bz2 452K /home/ismail/Pictures 20K /home/ismail/Templates 8,0K /home/ismail/year 4,0K /home/ismail/year/2020 4,0K /home/ismail/Videos 4,0K /home/ismail/userinput.py 4,0K /home/ismail/thinclient_drives 4,0K /home/ismail/test 4,0K /home/ismail/sample.txt 4,0K /home/ismail/read_line_by_line.sh 4,0K /home/ismail/Public 4,0K /home/ismail/names.txt 4,0K /home/ismail/myfolder 4,0K /home/ismail/Music 4,0K /home/ismail/Downloads 4,0K /home/ismail/Documents 4,0K /home/ismail/Desktop 4,0K /home/ismail/data5 4,0K /home/ismail/data4 4,0K /home/ismail/data3 4,0K /home/ismail/data2 4,0K /home/ismail/data1 0 /home/ismail/text.txt 0 /home/ismail/newfile 0 /home/ismail/mylink 0 /home/ismail/myfile 0 /home/ismail/file4 0 /home/ismail/file3 0 /home/ismail/file2 0 /home/ismail/file1
du:无法读取目录“…”:权限被拒绝错误
在使用du命令时,我们可能会得到“ du:无法读取目录“…”:权限被拒绝 “错误。此错误原因是当前用户权限不足以读取提供的目录。这些目录通常由root用户拥有,或者root用户或sudo用户可以读取这些目录。因此,只要提供sudo命令就可以解决这个错误。
du: cannot read directory '/var/lib/sss/keytabs': Permission denieddu: cannot read directory '/var/lib/sss/secrets': Permission denieddu: cannot read directory '/var/lib/mysql-keyring': Permission denieddu: cannot read directory '/var/log/private': Permission denieddu: cannot read directory '/var/log/gdm3': Permission denieddu: cannot read directory '/var/log/sssd': Permission denieddu: cannot read directory '/var/log/speech-dispatcher': Permission denieddu: cannot read directory '/var/spool/cron/crontabs': Permission denieddu: cannot read directory '/var/spool/rsyslog': Permission denieddu: cannot read directory '/var/spool/cups': Permission denied3,4G total1,7G /var/log1,4G /var/lib345M /var/cache5,2M /var/backups1,4M /var/snap48K /var/spool
用下面的sudo命令解决这个错误。
sudo du -csh /var/* | sort -rh
使用文件管理器(GUI)获取目录大小
文件管理器是管理文件和目录的GUI工具。文件管理器还可以用来获取目录大小。首先打开文件管理器 右击 在你想要得到大小的目录上。选择 属性 就像下面一样。
![图片[2]-在Linux中如何获得目录/文件夹的大小?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2021/01/linuxtect_image-1.png)
下面的目录属性屏幕提供有关目录的信息。目录的大小也列在 目录 列出目录的内容计数和总大小的行。
![图片[3]-在Linux中如何获得目录/文件夹的大小?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2021/01/linuxtect_image-2.png)