关于linux:使用ls列出目录及其总大小 |
您所在的位置:网站首页 › linux文件夹大小都是40k › 关于linux:使用ls列出目录及其总大小 |
是否可以在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 -ltrapRlist 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 --reversedu - 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 |