是否有可能在Unix中使用ls列出子目录的总大小及其所有内容,而不是通常的4K(我假设)只是目录文件本身?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
在翻遍了手册之后,我一无所获。
是否有可能在Unix中使用ls列出子目录的总大小及其所有内容,而不是通常的4K(我假设)只是目录文件本身?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
在翻遍了手册之后,我一无所获。
当前回答
以人类可读的格式列出当前目录中最大的目录:
Du -sh * | sort -hr
一个更好的限制行数的方法是
Du -sh * | sort -hr | head -n10
在哪里可以增加-n标志的后缀来限制列出的行数
示例:
[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M Vendor
1.1M composer.phar
488K phpcs.phar
488K phpcbf.phar
72K doc
16K nbproject
8.0K composer.lock
4.0K README.md
这样读起来更方便:)
其他回答
du -S
du还有另一个有用的选项:-s,——separate-dirs告诉du不包含子目录的大小——在某些情况下很方便。
例1 -仅显示目录中的文件大小:
du -Sh *
3,1G 10/CR2
280M 10
例2 -显示了目录下的文件大小和子目录:
du -h *
3,1G 10/CR2
3,4G 10
du -sh * | sort -h
这将以人类可读的格式显示。
只是一个警告,如果你想比较文件的大小。Du根据文件系统、块大小、... .产生不同的结果
可能会发生文件大小不同的情况,例如比较您的本地硬盘和USB大容量存储设备上的相同目录。我使用以下脚本,包括ls来计算目录大小。结果以字节为单位,将所有子目录都考虑在内。
echo "[GetFileSize.sh] target directory: \"$1\""
iRetValue=0
uiLength=$(expr length "$1")
if [ $uiLength -lt 2 ]; then
echo "[GetFileSize.sh] invalid target directory: \"$1\" - exiting!"
iRetValue=-1
else
echo "[GetFileSize.sh] computing size of files..."
# use ls to compute total size of all files - skip directories as they may
# show different sizes, depending on block size of target disk / file system
uiTotalSize=$(ls -l -R $1 | grep -v ^d | awk '{total+=$5;} END {print total;}')
uiLength=$(expr length "$uiTotalSize")
if [ $uiLength -lt 1 ]; then
uiTotalSize=0
fi
echo -e "[GetFileSize.sh] total target file size: \"$uiTotalSize\""
fi
exit "$iRetValue"
目录中文件夹和文件的有序列表(后代顺序,根据大小):
du -skh * | sort -hr
包括隐藏文件:
du -skh .??* * | sort -hr
解释:
du命令用于估计磁盘使用情况。
-s summary,不是递归的,只在这个级别的文件/文件夹。 -kh人类可读,如GB, MB, KB等… 。? ?*带有点的名字。长度为3个或更多字符(不包括。和. .链接)。 *所有不以..开头的文件/文件夹
Du默认先显示较小的尺寸。我们对两组文件(隐藏文件和普通文件)调用它,因此我们需要再次组合结果对结果进行排序。
-h重新排序考虑人类可读字符(人类数字,如GB, MB等.)。 -r颠倒顺序。
请注意。其他答案包含大多数这些选项,但分散在不同的,这里没有探索如何轻松包含隐藏的文件/文件夹。
我遇到了一个类似于Martin Wilde描述的问题,在我的例子中,在使用rsync镜像后比较两个不同服务器上的相同目录。
我没有使用脚本,而是向du添加了-b标志,它以字节为单位计算大小,据我所能确定,消除了两台服务器上的差异。您仍然可以使用-s -h来得到一个可理解的输出。