gpt4 book ai didi

linux - 在目录树中查找每个目录中的文件数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:32 24 4
gpt4 key购买 nike

我需要找出树中哪些目录中的文件最多(但不是在它们的子目录中)。目录不应计算在内。

这很容易用 bash、Perl、Python、Tcl 等解决,但是将它作为一行来解决很有趣。

我写了下面正确的一行代码

ls -Rp1 | grep -vP '\/$' | perl -pe 's/\n/ /' | perl -e '$ln=<>;@ds=split/(?=\.\/)/,$ln;for(@ds){($d,$fs)=split/:/;$fs=~s/^\s+|\s+$//;$c=split/\s+/,$fs;$fc+=$c;print "$c $d\n"}print "Totals: dirs: @{[scalar @ds]}, files: $fc\n"' | sort -n

是否有更优雅的单行解决方案来执行此操作,而不必使用 Perl?

这是多行等价物

#!/usr/bin/perl

$line = <>;
@dirs = split/(?=\.\/)/, $line;

for ( @dirs ) {
($dir, $files) = split /:/;
$files =~ s/^\s+|\s+$//;
$count = split/\s+/, $files;
$total_files_count += $count;
print "$count $dir\n"
}

print "Totals: dirs: @{[scalar @dirs]}, files: $total_files_count\n";

最佳答案

这行不通吗?

find . -type f | sed -e 's/[^\\/]*$//' | sort | uniq -c | sort -rn | head -10

PS:如果意图是最短的代码,您可能想发布代码高尔夫的挑战。

关于linux - 在目录树中查找每个目录中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852881/

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