我正在尝试按目录打印出用户的详细信息以及总存储消耗组。以下是我到目前为止编写的代码片段。
find $1 -atime +$2 -size +$3M -type f -exec ls -lu --block-size=MB \
{} \; | awk '{print $3, $4, $5, $6, $7, $8, $9}' | awk '
{ a[$1] += $3 }
END {
for (i in a) {
printf "%-15s\t%s\n", i, a[i];
}
}'
上面的代码打印用户 ID 和总存储消耗。
下面是上面代码的示例输出
user1 500MB
但是我也想打印目录信息以及特定目录的存储消耗
所以让我们把输入当作
user1 100 MB /dir1/dir2/dir3/dir4/file1
user1 100 MB /dir1/dir2/dir3/dir4/file2
user1 150 MB /dir1/dir2/dir3/dir5/file1
user1 150 MB /dir1/dir2/dir3/dir5/file2
我要显示的输出是
user1 200 MB /dir1/dir2/dir3/dir4
user1 300 MB /dir1/dir2/dir3/dir5
有人可以帮我实现这个吗?
最佳答案
优化find
+ numfmt
解决方案:
find $1 -atime +$2 -size +$3M -type f \
-printf "%-15u\t%kK\t%p\n" | numfmt --field=2 --from=iec --to=iec -d$'\t'
关于linux - 在 linux 中打印文件目录以及存储空间和用户标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48883870/