如何在Linux中查看文件和目录的大小?如果使用df -m,那么它会显示所有目录在顶层的大小,但是,对于目录内的目录和文件,我如何检查大小?


当前回答

要获得目录的总大小或文件使用的总大小,

du -csh <directory or filename*> | grep total

其他回答

还有一个很棒的ncdu实用程序-它可以显示目录大小和子文件夹和文件的详细信息。

安装

Ubuntu:

$ sudo apt-get install ncdu

使用

只需在命令行中输入ncdu [path]。经过几秒钟的路径分析后,你会看到如下内容:

$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
.  96,1 GiB [##########] /home
.  17,7 GiB [#         ] /usr
.   4,5 GiB [          ] /var
    1,1 GiB [          ] /lib
  732,1 MiB [          ] /opt
. 275,6 MiB [          ] /boot
  198,0 MiB [          ] /storage
. 153,5 MiB [          ] /run
.  16,6 MiB [          ] /etc
   13,5 MiB [          ] /bin
   11,3 MiB [          ] /sbin
.   8,8 MiB [          ] /tmp
.   2,2 MiB [          ] /dev
!  16,0 KiB [          ] /lost+found
    8,0 KiB [          ] /media
    8,0 KiB [          ] /snap
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /srv
!   4,0 KiB [          ] /root
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /cdrom
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz

用d删除当前高亮显示的元素,用CTRL + c退出

ls -l——block-size=M将给出一个很长的格式列表(需要实际查看文件大小),并将文件大小四舍五入到最近的MiB。

如果你想要MB(10^6字节)的单位而不是MiB(2^20字节)的单位,使用——block-size=MB代替。

如果你不希望文件大小附加M后缀,你可以使用——block-size=1M。感谢Stéphane Chazelas的建议。

这在ls的手册页中描述;男人和搜索大小。它还允许使用MB/MiB以外的单位,并且从它的外观(我没有尝试过)来看,它还允许任意块大小(因此,如果您愿意,您可以将文件大小视为412字节块的数量)。

注意——block-size参数是在Open Group的ls之上的GNU扩展,所以如果你没有GNU用户区(大多数Linux安装都有),这个参数可能不起作用。GNU coreutils 8.5中的ls支持如上所述的——块大小。

您可以在这里使用ncdu磁盘使用分析器。它在ncurses接口中显示文件和目录的大小。您可以导航到每个目录,并从同一界面查看文件大小。

安装

$ sudo apt-get install ncdu

分析

$ ncdu <directory>

如果您在脚本中使用它,请使用stat。

$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019

$ stat -c %s /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 05:36 /tmp/foo

这将给出以字节为单位的大小。有关更多输出格式选项,请参阅man stat。

OSX/BSD的等效版本是:

$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019

$ stat -f %z /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 00:54 /tmp/foo

进入所选目录并执行:

$ du -d 1 -h

地点:

-d 1 is the depth of the directories

-h is the human-readable option

你会看到:

0   ./proc
8.5M    ./run
0   ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G    ./usr
154M    ./boot
26G ./home
0   ./media
0   ./mnt
421M    ./opt
0   ./srv
2.6G    ./backups
80G .