如何用Linux命令获取特定文件夹中文件和目录的大小?

563

如何在Linux中查看文件和目录的大小?使用df -m命令,可以显示顶层目录下所有目录的大小,但是对于目录和文件内部的内容,如何检查它们的大小呢?

22个回答

11

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

ls -lrtsh


8
你可以在这里使用ncdu磁盘使用分析工具。它以ncurses界面显示文件和目录的大小。你可以在同一界面中导航到每个目录并查看文件大小。
安装方法:
$ sudo apt-get install ncdu

为了分析,
$ ncdu <directory>

enter image description here


7
我经常做以下事情:

我经常做以下事情:

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

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

7

要获取目录的总大小或文件的总大小,请使用以下命令:

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

7

使用ls命令并带上-h参数:[root@hots19 etc]# ls -lh
h : 代表可读性高。

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

7

du -sh [文件名]

这个命令可以完美地获取特定文件的大小。


7
我更喜欢使用命令ll -sha

简单而有效。 - Shivam Chaudhary

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

4
ls -sh video.mp4 | sed s/video.mp4//g

output, 5.6M


1
请问您能否提供一些上下文,解释为什么这个回答可以解决问题?例如,解释每个命令的作用。 - António Ribeiro
为什么要用 sed 部分? - Robert
2
我正在寻找获取用户输入文件大小的确切命令。我发现这个堆栈很有用。但是,这里给出的所有命令都会显示文件名。因此,根据我的需求,我只需要输出大小,例如5.6M。所以,我发布了这个帖子,如果有人有同样的需求,可能会从中受益。使用ls -sh video.mp4列出带有文件名的文件大小,然后我添加了sed s/video.mp4//g来将文件名替换为空。例如:sed s/$filename/empty/g就像那样。希望至少有人能够发现它对于和我一样的人有所帮助。 - Philip

2
你需要区分“文件大小”和“磁盘使用量”。两者的主要区别在于文件被“切成块”并存储在块中。现代块大小为4KiB,因此文件将使用4KiB的倍数的磁盘空间,无论它们有多小。
如果使用命令stat,你可以看到两个数字并排显示。
stat file.c

如果您想要更紧凑的目录视图,可以使用ls -ls命令,它会以1KiB为单位显示用量。
ls -ls dir

此段文字的意思是:“du 命令可以以 1KiB 为单位给出实际磁盘使用量,或者使用带有 -u 标志的 dutree 命令。例如:一个 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 中的文件大小

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接