嘿,所以我是以
格式打印最大文件大小的最便捷方式(此输出中的值仅作为示例
文件大小最大:2015年 平均文件大小:1132
所以要获得最大的文件大小,我可能会使用命令
find . -type f -ls | sort -r -n -k7 | head -n 1
这将打印多个属性的冗长列表并打印其中最大的属性(基于文件大小)
问题是,我无法真正找到获得实际文件大小的方法
以类似的方式,我想要的是获得平均文件大小。
所以我需要找到一种方法,将所有文件的文件大小相加,然后将其除以文件数
要获得数字很简单,只需简单(找到.- type f | wc -l) 更大的问题是关于摘要。
理想情况下,我希望解决方案采用简单的格式
例如。 echo "Largest file size: $(find . -type f | command | command)"
谢谢。
答案 0 :(得分:0)
最大的文件
find . -type f -printf "%s\t%p\n" | sort -nr | head -1 | cut -f1
平均文件大小
find . -type f -printf "%s\t%p\n" | awk '{sum+=$1; c++} END{print sum/c}'
当然,当你有awk
时,不需要做两次
$ find . -type f -printf "%s\t%p\n" |
awk 'max<$1{max=$1}
{sum+=$1; c++}
END{print "largest: "max; print "average: " sum/c}'
largest: 74
average: 19
当然,如果您不打算使用文件名,则可以更改为printf "%s"
答案 1 :(得分:0)
您可以使用 cut 命令打印由某个分隔符分隔的一行的一部分
对于最大的文件大小,您可以使用:
echo "Largest file size: $(find . -type f -ls | sort -r -n -k7 | head -n 1 | cut -d' ' -f2)"
对于平均尺寸,多种选择是可行的。你可以使用awk:
echo "Average file size: $(find . -type f -ls | sort -r -n -k7 | cut -d' ' -f2 | awk '{ total += $1; count++ } END { print total /count}')"