关于linux:使用ls列出目录及其总大小

您所在的位置:网站首页 linux文件夹大小都是40k 关于linux:使用ls列出目录及其总大小

关于linux:使用ls列出目录及其总大小

2024-07-07 13:20| 来源: 网络整理| 查看: 265

是否可以在Unix中使用ls列出子目录及其所有内容的总大小,而不是通常的4K(我假设)只是目录文件本身?I.E.

1234total 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 -s代替 寻找鸭子:alias ducks='du -cksh * | sort -hr | head -n 15'

尝试类似的东西:

1du -sh *

简短版本:

1du --summarize --human-readable *

说明:

du:磁盘使用情况

-s:显示每个指定文件的摘要。 (相当于-d 0)

-h:"人类可读"的输出。使用单位后缀:Byte,Kibibyte(KiB),Mebibyte(MiB),Gibibyte(GiB),Tebibyte(TiB)和Pebibyte(PiB)。 (BASE2)

相关讨论 +1 ... du用于任务,ls不是。 另外-c(产生总计)很不错。 du --max-depth 1仅显示树中1深的文件/文件夹大小,不再杂乱,并且容易在文件夹中找到大文件夹。 如何包含隐藏文件? 在OSX上它是du -h -d 1 @ zak在zsh中你可以使用*(D)来匹配隐藏(点)文件和普通文件。使用bash时,可以使用* .[!.]*来匹配两者。 为了清楚地了解空间的位置,du -sch * .[!.]* | sort -rh很棒(显示已排序的输出)在Mac上执行:brew install coreutils然后du -sch * .[!.]* | gsort -rh 所有这些答案都提到杜。但结果可能是错误的。磁盘使用量的总和与每个文件大小的总和不同。如果我在目录上有100个1字节的文件,du -hs 显示400k,而不是100个字节......(只是在linux上试过) --summary现在是--summarize或(-s)

du -sk * | sort -n将按大小对文件夹进行排序。想要清理空间有帮助..

相关讨论 附加| tail -r以按最大排序排序。 sort -rn以反向数字顺序对事物进行排序。 sort -rn | head -n 10只显示前几个,如果有兴趣的话。 sort -rh可以很好地与du -cksh *一起使用,因为它可以对人类可读单元进行排序。 不幸的是,@ Sebi -h不是Mac上排序的有效参数 @Sebi也不需要-c,du -ksh | sort -rn与du -cksh | sort -rn相同。正如du -ksh与du -cksh相同。 为什么-k必要?在文档中它说:-k like --block-size = 1K,这会影响精度吗?

1du -sh * | sort -h

这将以人类可读的格式显示。

相关讨论 有关sort -h的更多信息,请访问:xnu.org/software/coreutils/manual/…它尤其适用于排序103K,102M,1.1G等。现在很多系统都可以使用它,但不是全部。 duh -shm * |排序-n? 效果很好,一个小的补充du -sh * | sort -rh(-r首先列出更大的文件夹)

以人类可读格式列出当前目录中的最大目录:

du -sh * | sort -hr

限制行数的更好方法是

du -sh * | sort -hr | head -n10

您可以在其中增加-n标志的后缀以限制列出的行数

样品:

1234567891011[~]$ 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

它使阅读更方便:)

要以ls -lh格式显示,请使用:

1(du -sh ./*; ls -lh --color=no) | awk '{ if($1 =="total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5"[ ]*", sprintf("%-7s", SIZES["./" $9]), $0); print $0} }'

awk代码解释说:

123456789if($1 =="total") { // Set X when start of ls is detected   X = 1 } else if (!X) { // Until X is set, collect the sizes from `du`   SIZES[$2] = $1 } else {   // Replace the size on current current line (with alignment)   sub($5"[ ]*", sprintf("%-7s", SIZES["./" $9]), $0);   print $0 }

样本输出:

1234drwxr-xr-x 2 root     root 4.0K    Feb 12 16:43 cgi-bin drwxrws--- 6 root     www  20M     Feb 18 11:07 document_root drwxr-xr-x 3 root     root 1.3M    Feb 18 00:18 icons drwxrwsr-x 2 localusr www  8.0K    Dec 27 01:23 passwd 相关讨论 有什么办法对这个输出进行排序对于Mac上的任何人来说,如果你删除--color=no,它的工作效果也会非常出色 @ anon58192932您可以将输出传输到sort --key=5,5h,以便从第五列排序"人类可读单位" 返回sort: stray character in field spec: invalid field specification 5,5h'。我真的很讨厌macs有时= @ anon58192932你可以问一个与mac有关的问题,我相信有人可以提供帮助。这个问题被标记为GNU / linux 有没有办法保持使用这个答案的颜色?

你想要的命令是'du -sk'du ="磁盘使用"

-k标志为您提供以千字节为单位的输出,而不是磁盘扇区的du默认值(512字节块)。

-s标志仅列出顶级目录中的内容(即默认情况下的当前目录或命令行中指定的目录)。在这方面,du具有相反的ls行为,这很奇怪。默认情况下,du将递归地为您提供每个子目录的磁盘使用情况。相反,ls只会在指定目录中提供列表文件。 (ls -R为您提供递归行为。)

相关讨论 在根目录上尝试了这个,它仍然试图列出子目录,导致很多消息。

将此shell函数声明放在shell初始化脚本中:

123function duls {     paste /home/log_size.txt

然后,您将能够在所有服务器上获取所有大小的文件夹。轻松帮助您找到最大的尺寸。

以递归方式显示当前目录的文件和子目录大小:

1du -h .

要显示相同大小的信息但不递归地打印它们的子目录(可能是一个巨大的列表),只需使用--max-depth选项:

1du -h --max-depth=1 .

有一段时间,我使用Nautilus(在RHEL 6.0上的Gnome桌面上)删除我的主文件夹上的文件,而不是在bash中使用rm命令。结果,显示的总大小

1du -sh

当我使用时,与每个子目录的磁盘使用量之和不匹配

1du -sh *

我花了一段时间才意识到Nautilus将已删除的文件发送到其Trash文件夹,并且该文件夹未在du -sh *命令中列出。所以,只是想分享这个,以防有人遇到同样的问题。

我遇到了类似于Martin Wilde描述的问题,在我的情况下,在使用rsync镜像后比较两个不同服务器上的相同目录。

我没有使用脚本,而是将-b标志添加到du中,该标志以字节为单位计算大小,并且我可以确定消除了两台服务器上的差异。您仍然可以使用-s -h来获得可理解的输出。

以下是容易记住的

1ls -ltrapR

list directory contents

-l use a long listing format

-t sort by modification time, newest first

-r, --reverse reverse order while sorting

-a, --all do not ignore entries starting with .

-p, --indicator-style=slash append / indicator to directories

-R, --recursive list subdirectories recursively

https://explainshell.com/explain?cmd=ls+-ltrapR

相关讨论 不显示目录的大小。

放在init脚本中,如.bashrc ...根据需要调整def。

123456duh() {   # shows disk utilization for a path and depth level   path="${1:-$PWD}"   level="${2:-0}"   du"$path" -h --max-depth="$level" }

如果您想要更多地控制要列出目录的size,可以使用threshold(-t)开关,如下所示:

1$ du -ht 1000000000 | sort --reverse

du - d isk u sage h - 人类可读格式 t - 阈值大小

在这里,我们要列出大小超过1GB的所有目录。

1$ du -ht 1G | sort --reverse

说明:

维基中描述的单位如下:

K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, GB, TB, PB, EB, ZB, YB (powers of 1000).

输入"ls -ltrh / path_to_directory"



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3