繁体   English   中英

如何查找所有目录和子目录的文件总和(分别),并按大小对文件进行排序

[英]How to find sum of files for all directories and sub directories (separately) and them sort them by size

您能否建议我如何找到目录和子目录中所有文件的总和? 我尝试制作此脚本,但无法正常工作。

find . -xdev -type d  | while read l;do ls -l "$l" |
  awk '{sum+=$5}END{print sum/1024/1024 "" $l }';done | sort -k 1 

Unix工具箱中已经有一个用于此目的的工具。 您不必重新发明轮子:

du -x -s * | sort -n

您的du(1)手册页(用于磁盘使用 )说明了所有问题。

awk命令在错误的位置。 它应该在while循环之后。

问题是哪个程序扩展了哪个变量。 您希望外壳程序在awk命令中扩展$ l,但是awk命令用单引号引起来,因此外壳程序不会扩展$ l。

将$ l作为变量传递给awk应该可以解决您的问题:

find . -xdev -type d |
while read l; do
  ls -l "$l" |
  awk -v "l=$l" ' {sum+=$5} END{print sum " " l} '
done |
sort -n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM