gpt4 book ai didi

linux - 按目录中的所有者汇总文件大小的最快方法

转载 作者:太空狗 更新时间:2023-10-29 11:25:00 24 4
gpt4 key购买 nike

我正在使用以下命令使用别名打印目录中所有者的所有文件大小的总和

ls -l $dir | awk ' NF>3 { file[$3]+=$5 } \
END { for( i in file) { ss=file[i]; \
if(ss >=1024*1024*1024 ) {size=ss/1024/1024/1024; unit="G"} else \
if(ss>=1024*1024) {size=ss/1024/1024; unit="M"} else {size=ss/1024; unit="K"}; \
format="%.2f%s"; res=sprintf(format,size,unit); \
printf "%-8s %12d\t%s\n",res,file[i],i }}' | sort -k2 -nr

但是,它似乎并不总是那么快。

是否有可能以其他方式获得相同的输出,但速度更快?

最佳答案

另一个 perl,显示按用户排序的总大小:

#!/usr/bin/perl
use warnings;
use strict;
use autodie;
use feature qw/say/;
use File::Spec;
use Fcntl qw/:mode/;

my $dir = shift;
my %users;

opendir(my $d, $dir);
while (my $file = readdir $d) {
my $filename = File::Spec->catfile($dir, $file);
my ($mode, $uid, $size) = (stat $filename)[2, 4, 7];
$users{$uid} += $size if S_ISREG($mode);
}
closedir $d;

my @sizes = sort { $a->[0] cmp $b->[0] }
map { [ getpwuid($_) // $_, $users{$_} ] } keys %users;
local $, = "\t";
say @$_ for @sizes;

关于linux - 按目录中的所有者汇总文件大小的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com