我ls -lS
在我的主目录中使用了命令。该命令应该按大小列出目录的内容。这是我运行此命令后得到的结果
total 10148
-rw-rw-r-- 1 rahul rahul 8053159 May 15 15:35 Costa_ODE.pdf
-rw-rw-r-- 1 rahul rahul 1755507 May 15 17:33 gnuplot.pdf
-rw-rw-r-- 1 rahul rahul 218048 May 13 22:14 out.log
-rw-rw-r-- 1 rahul rahul 98131 Feb 16 01:53 hs_err_pid8639.log
-rw-rw-r-- 1 rahul rahul 12364 Apr 19 14:01 Untitled 1.csv
drwxr-xr-x 4 rahul rahul 12288 Jun 6 2016 cfitsio
-rw-r--r-- 1 rahul rahul 8980 Feb 7 2016 examples.desktop
drwxrwxr-x 2 rahul rahul 4096 Mar 10 12:24 bin
drwxrwxr-x 8 rahul rahul 4096 May 8 14:51 boxfitv2
drwxrwxrwx 2 rahul rahul 4096 Jan 30 11:50 dao2
drwxrwxr-x 2 rahul rahul 4096 Mar 12 2016 deja-dup
drwxr-xr-x 6 rahul rahul 4096 May 16 02:12 Desktop
drwxr-xr-x 3 rahul rahul 4096 May 15 10:53 Documents
drwxr-xr-x 5 rahul rahul 4096 May 8 14:09 Downloads
.
.
.
.
这是一个相当大的清单。但我希望您关注子目录,例如桌面。其大小显示为 4096 字节。但是当我尝试查看桌面的详细信息时,这就是我得到的。
简而言之,该命令ls -lS
并不计算Desktop和其他子目录内容的大小。有什么办法可以做到吗?
编辑:
ls -lsh
命令输出
total 10M
4.0K drwxrwxr-x 2 rahul rahul 4.0K Mar 10 12:24 bin
4.0K drwxrwxr-x 8 rahul rahul 4.0K May 8 14:51 boxfitv2
4.0K -rw-rw-r-- 1 rahul rahul 3.2K May 13 13:28 c.c
12K drwxr-xr-x 4 rahul rahul 12K Jun 6 2016 cfitsio
7.7M -rw-rw-r-- 1 rahul rahul 7.7M May 15 15:35 Costa_ODE.pdf
4.0K drwxrwxrwx 2 rahul rahul 4.0K Jan 30 11:50 dao2
0 -rw-rw-r-- 1 rahul rahul 0 May 13 20:37 default.txt
4.0K drwxrwxr-x 2 rahul rahul 4.0K Mar 12 2016 deja-dup
4.0K drwxr-xr-x 6 rahul rahul 4.0K May 16 17:11 Desktop
4.0K drwxr-xr-x 3 rahul rahul 4.0K May 15 10:53 Documents
4.0K drwxr-xr-x 5 rahul rahul 4.0K May 8 14:09 Downloads
12K -rw-r--r-- 1 rahul rahul 8.8K Feb 7 2016 examples.desktop
.
.
.
du -sh ~/Desktop
命令输出
80M /home/rahul/Desktop
答案1
ls -lS
确实显示了目录的真实大小:目录本身+对给定目录中包含的任何文件的引用。
您可以使用du
而不是ls
:
du -ha -d 1 | sort -hr
du
:递归估计目录的文件空间使用情况
h
:人类可读
a
:所有内容,不仅仅是目录
d 1
:最大深度 1,因此您只检查当前目录中的目录
sort -hr
: 降序排序
答案2
ls
显示的大小常规的文件(或者,在目录的情况下,其索引节点的大小,而不仅仅是其内容,因为它没有快速的方法来确定它,而对于常规文件,大小是已知的,因此可以准确且快速地显示)。
实际上,该字段根据文件代表的内容而有所不同:
- 对于常规文件:它显示它们的实际大小
- 对于符号链接(符号链接,
ln -s source dest
):符号链接名称的长度(因为这是符号链接文件的内容)。 (例如:符号链接/dev/fd -> /proc/self/fd
:具有正好 13 个字符长的目标路径 (/ p r o c / s e l f / f d
),因此ls -l
将在第 5 列中显示“13”,而不是指向文件的大小。) - 对于目录:一个 inode 的大小(如果目录条目的内容适合一个)或多个 inode(如果需要多个 inode 来描述该目录条目的列表)。这就是为什么大多数文件都是 4096:通常它们内部没有很多文件,因此它可以全部放入 1 个 inode,默认情况下通常为 4096 字节。如果您曾经将许多文件放入某个目录中,则该文件将会上升(并且很可能会在之后保持上升状态,除非您重新创建目录本身)。
- 对于管道和其他文件类型:每次通常与大小关联的字段可能是也可能不是大小(例如:对于块设备(例如:/dev/hd* 文件),它不显示任何大小,而是显示他们的
major, minor
配对信息请参阅man mknod
。man ls
)
要了解目录+子目录的内容总和:
du /some/path
# 将显示每个目录:其内容的总和(包括子目录),并显示其及其下的每个目录/some/path
du -s /some/path
# 将仅显示 1 级,即仅显示 /some/path 的总计du -S /some/path
# 显示每个目录的内容,不包括其子目录。有助于准确了解 /some/path 的哪些子目录较大。