我有 2 个文件夹,其中包含子文件夹(以用户命名)。大多数子文件夹名称都存在于两个文件夹中,但并非全部。现在我想创建每个用户使用的空间列表。
我可以使用以下命令获取每个文件夹的列表,
du -m --max-depth=1 | sort -nr
但我不知道如何轻松合并这两个列表。并非所有用户在两个地方都有文件夹,因此简单的排序不起作用。有没有人知道如何汇总每个用户的文件夹大小?
答案1
尝试一下:
join -j 2 <(cd dir1; du -m --max-depth=1 | sort -k2,2) <(cd dir2; du -m --max-depth=1 | sort -k2,2) | awk '{print $2 + $3, $1}' | sort -nr
它看起来应该是这样的:
11 ./bob
9 ./jan
8 ./cheryl
3 ./mike
您可以更改 AWK 命令以使输出更具吸引力:
awk '{printf "%6s\t%s\n", $2 + $3, $1}'
这将使数字右对齐,并使名称在一列中排列。