2016-03-28 8 views
0

ねえ私は最大のファイルの印刷サイズと平均ファイルサイズ

の形式で印刷するには、最大ファイルサイズを取得するための最も便利な方法をしました(この出力の値は一例として機能

最大ファイルサイズ:平均ファイルの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

最大ファイル

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"

+0

'du -s'コマンドは、ディスクの使い方の概要を示します。ファイル数で除算したものが平均です。 –

0

あなたはが最大のファイルサイズについていくつかの区切り文字

で区切られた1つのラインの部分だけを印刷するコマンドをカットし、あなたが使用することができます使用することができます。

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}')" 
+0

動作しません。空のコマンドラインだけを表示します。カットを間違って設定する必要があります。それをもう少し詳しく見てみよう。私の前提は、ファイルの中に空きスペースがないためです。 – Rawrplus

+0

コマンドの途中に改行があったため、コマンドを1行に編集しました。今は動作しますか? –

+0

解決策を見つけましたが、それには複数のものがあります。私は個人的にすべての[:blank:]文字を削除し、その間に空白(空白)を挿入するためにsedを使いました。 ソリューションへのリンク:http://stackoverflow.com/questions/36271115/replacing-unknown-amount-of-blank-spaces-for-x-amount/36271962#36271962 – Rawrplus

関連する問題