如何查看Linux中文件和目录的大小?


340

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

Answers:


533

ls对文件使用命令,du对目录使用命令。

检查文件大小

ls -l filename   #Displays Size of the specified file
ls -l *          #Displays Size of All the files in the current directory
ls -al *         #Displays Size of All the files including hidden files in the current directory
ls -al dir/      #Displays Size of All the files including hidden files in the 'dir' directory

ls该命令将不会列出目录的实际大小(为什么?)。因此,我们du为此目的使用。

检查目录大小

du -sh directory_name    #Gives you the summarized(-s) size of the directory in human readable(-h) format
du -bsh *                #Gives you the apparent(-b) summarized(-s) size of all the files and directories in the current directory in human readable(-h) format

包括-h选择上述任何命令(用于例如:ls -lh *du -sh)会给你在人类可读的格式大小(kbmbgb,...)

有关更多信息,请参见man lsman du


7
ls不会显示目录所有内容的总大小。
Maxim Egorushkin 2014年

3
@MaximYegorushkin谢谢。已更正。
mk..2014年

2
如何查看以字节为单位的大小(兆,千兆,...)?
Francisco Corrales Morales 2014年

7
@FranciscoCorralesMorales LS -lh会告诉你在KB MB GB等大小
MK ..

4
请注意,该du命令显示了文件的磁盘使用情况,但可能大于文件的实际大小。您可以du -d用来获取实际大小ls。更多信息:unix.stackexchange.com/a/106278/155224
Lucas Alonso

148

du命令。

目录和/或文件的大小:

$ du -sh .bashrc /tmp

--apparent-size命令行开关可以测量外观大小(ls显示内容),而不是实际磁盘使用情况。


1
如何查看以字节为单位的大小(千,兆,千兆,...)?
Francisco Corrales Morales 2014年

8
@FranciscoCorralesMorales -h标志应该按照您的要求进行操作:以人类可读的格式打印尺寸(例如1K 234M 2G)
Maxim Egorushkin 2014年

3
我认为这是不对的。什么du摘要文件集的磁盘使用情况,即如果文件非常小(即2140字节),“ du”的输出(在我的情况下)为4KB,因为这是群集的大小
mfloris

@mfloris --apparent-size然后使用。
Maxim Egorushkin

3
我喜欢du -hs *查看当前目录中所有文件和目录的大小。
乔丹·斯图尔特

82

使用ls -s到列表文件的大小,或者如果你喜欢ls -sh的人可读的大小。

对于目录,请使用dudu -h对于人类可读的大小,请再次使用。


7
提示是使用;'du -sh *'列出所有目录大小。:)
Entalpi'2

36

您可以使用:

ls -lh

使用此命令,您将看到目录的外观空间和文件的真实空间,并详细显示了所显示文件的名称,以及每个文件的大小和创建日期。


ls -l会给你包括元数据的文件大小吗?因为它似乎对我尝试过的文件之一稍微大了4kb
Jun711

22

文件大小(MB)

ls -l --b=M  filename | cut -d " " -f5

文件大小(GB)

ls -l --b=G  filename | cut -d " " -f5

如何获得两个字段作为输出?
surbhiGoel

17

还有一个很棒的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


16

ls -l --block-size = M将为您提供长格式列表(需要实际查看文件大小),并将文件大小四舍五入到最接近的MiB。

如果要使用MB(10 ^ 6字节)而不是MiB(2 ^ 20字节)单位,请使用--block-size = MB。

如果您不希望文件大小附带M后缀,则可以使用--block-size = 1M之类的方法。感谢StéphaneChazelas提出的建议。

在ls的手册页中对此进行了描述;并查找SIZE。它也允许使用MB / MiB以外的单元,并且从它的外观(我没有尝试过)中也可以选择任意块大小(因此,如果需要,您可以将文件大小视为412字节块的数量)至)。

请注意,--block-size参数是Open Group的ls之上的GNU扩展,因此,如果您没有GNU用户区(大多数Linux安装会这样做),这可能不起作用。如上所述,来自GNU coreutils 8.5的ls支持--block-size。


13

转到所选目录并执行:

$ 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 .

9

如果在脚本中使用它,请使用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

8

您可以使用以下命令以易于阅读的格式获取文件列表。

ls -lrtsh


7

我一直在做以下事情:

$ du -sh backup-lr-May-02-2017-1493723588.tar.gz

注意:

-s, --summarize
            display only a total for each argument
-h, --human-readable
            print sizes in human readable format (e.g., 1K 234M 2G)


5

ls命令与-h参数一起使用:[root @ hots19等]#h ls -lh
:易于阅读。

Exemple: 
    [root@CIEYY1Z3 etc]# ls -lh
    total 1.4M
    -rw-r--r--.  1 root   root      44M Sep 15  2015 adjtime
    -rw-r--r--.  1 root   root     1.5K Jun  7  2013 aliases
    -rw-r--r--   1 root   root      12K Nov 25  2015 aliases.db
    drwxr-xr-x.  2 root   root     4.0K Jan 11  2018 alternatives
    -rw-------.  1 root   root      541 Jul  8  2014 anacrontab
    -rw-r--r--.  1 root   root      55M Sep 16  2014 asound.conf
    -rw-r--r--.  1 root   root       1G Oct  6  2014 at.deny

4

我本人是Ubuntu 16.04用户,我发现该ll命令是迄今为止查看目录内容的最简单方法。我注意到并不是所有的Linux发行版都支持此命令,但是那里的每个发行版都可能有解决方法/安装。

例:

user@user-XPS-15-9560:/$ ll
total 188
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ./
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ../
drwxr-xr-x   2 root root  4096 Jan 22 15:13 bin/
drwxr-xr-x   4 root root 12288 Jan 29 11:35 boot/
drwxr-xr-x   2 root root  4096 Sep  3 18:14 cdrom/
drwxr-xr-x  20 root root  4440 Feb  5 08:43 dev/
drwxr-xr-x 153 root root 12288 Feb  2 15:17 etc/
drwxr-xr-x   4 root root  4096 Sep  3 18:15 home/
...

对我来说,最大的好处是使用起来非常快捷且非常直观。

更新:我不知道的是在Ubuntu上,它是一个预先配置的别名。您可以通过alias ll="ls -la"在命令行上执行或在.bashrc配置文件中添加以下条目来轻松地自行设置:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc

3

du -sh [文件名]

可以完美地获取特定文件的大小。


3

您所需要的只是-l--block-size标志

工作目录下所有文件和目录的大小(以MB为单位)

ls -l --block-size=M

工作目录下所有文件和目录的大小(以GB为单位)

ls -l --block-size=G

特定文件或目录的大小

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l 使用长列表格式

--block-size=SIZESIZE在打印之前按比例缩放尺寸;例如, '--block-size=M'以1,048,576字节为单位打印尺寸;请参阅SIZE下面的格式

SIZE是整数和可选单位(例如:10M是10 * 1024 * 1024)。单位为K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB,...(1000的幂)。



2

您必须区分文件大小磁盘使用情况。两者之间的主要区别在于文件被“切成碎片”并存储在块中的事实。

现代块大小为4KiB,因此文件将使用4KiB的磁盘空间倍数,而不管它们有多小。

如果使用该命令stat,则可以同时看到两个图形。

stat file.c

如果您想要目录的更紧凑视图,可以使用ls -ls,它将以1KiB单位使用。

ls -ls dir

du可以使用1KiB单位或带有标志的dutree为您提供实际的磁盘使用情况-u

示例:1字节文件的用法

$ echo "" > file.c

$ ls -l file.c
-rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ ls -ls file.c
4 -rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ du file.c
4 file.c

$ dutree file.c
[ file.c 1 B ]

$ dutree -u file.c
[ file.c 4.00 KiB ]

$ stat file.c
 File: file.c
 Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: 2fh/47d Inode: 2185244 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nacho) Gid: ( 1000/ nacho)
Access: 2018-04-30 20:41:58.002124411 +0200
Modify: 2018-04-30 20:42:24.835458383 +0200
Change: 2018-04-30 20:42:24.835458383 +0200
 Birth: -

此外,在现代文件系统中,我们可以拥有快照,稀疏文件(其中有孔的文件),这会使情况进一步复杂化。

您可以在本文中看到更多详细信息:了解Linux中的文件大小


1

您可以在linux中使用ls -sh进行排序,也需要转到要检查文件大小的目录


1

转到特定目录,然后运行以下命令

# du -sh * 

4.0K    1
4.0K    anadb.sh --> Shell file
4.0K    db.sh/    --> shell file
24K     backup4/  --> Directory
8.0K    backup6/  --> Directory 
1.9G    backup.sql.gz  --> sql file

0

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

安装

$ sudo apt-get install ncdu

分析

$ ncdu <directory>

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.