Answers:
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
)会给你在人类可读的格式大小(kb
,mb
,gb
,...)
有关更多信息,请参见man ls
和man du
有du
命令。
目录和/或文件的大小:
$ du -sh .bashrc /tmp
--apparent-size
命令行开关可以测量外观大小(ls
显示内容),而不是实际磁盘使用情况。
-h
标志应该按照您的要求进行操作:以人类可读的格式打印尺寸(例如1K 234M 2G)
du
是摘要文件集的磁盘使用情况,即如果文件非常小(即2140字节),“ du”的输出(在我的情况下)为4KB,因为这是群集的大小
--apparent-size
然后使用。
du -hs *
查看当前目录中所有文件和目录的大小。
您可以使用:
ls -lh
使用此命令,您将看到目录的外观空间和文件的真实空间,并详细显示了所显示文件的名称,以及每个文件的大小和创建日期。
ls -l
会给你包括元数据的文件大小吗?因为它似乎对我尝试过的文件之一稍微大了4kb
文件大小(MB)
ls -l --b=M filename | cut -d " " -f5
文件大小(GB)
ls -l --b=G filename | cut -d " " -f5
还有一个很棒的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éphaneChazelas提出的建议。
在ls的手册页中对此进行了描述;并查找SIZE。它也允许使用MB / MiB以外的单元,并且从它的外观(我没有尝试过)中也可以选择任意块大小(因此,如果需要,您可以将文件大小视为412字节块的数量)至)。
请注意,--block-size参数是Open Group的ls之上的GNU扩展,因此,如果您没有GNU用户区(大多数Linux安装会这样做),这可能不起作用。如上所述,来自GNU coreutils 8.5的ls支持--block-size。
转到所选目录并执行:
$ 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 .
如果在脚本中使用它,请使用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 -csh <directory or filename*> | grep total
将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
我本人是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
您所需要的只是-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=SIZE
:SIZE
在打印之前按比例缩放尺寸;例如,'--block-size=M'
以1,048,576字节为单位打印尺寸;请参阅SIZE
下面的格式
SIZE
是整数和可选单位(例如:10M是10 * 1024 * 1024)。单位为K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB,...(1000的幂)。
您必须区分文件大小和磁盘使用情况。两者之间的主要区别在于文件被“切成碎片”并存储在块中的事实。
现代块大小为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中的文件大小
ls
不会显示目录所有内容的总大小。