2

このコマンドは、サイズを合計しようとします。

find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
    awk '{print $1}' | summming_up_program???

より簡単な解決策を見つけることができますか?

Ubuntu ソリューション。Ayman の Awk-end に感謝します。

find . -iname "*.dmg" -printf '%b\n' |
    awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'
4

4 に答える 4

3
find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
     awk 'BEGIN { s = 0 } {s += $1 } END { print s }'

statファイルのサイズを取得するために使用されます。awkすべてのファイル サイズを合計するために使用されます。

編集:

フォークしないソリューションstat:

find . -iname '*.dmg' -ls | 
     awk 'BEGIN { s = 0 } {s += $7 } END { print s }'
于 2009-05-23T19:17:58.977 に答える
1
wc -c *.pyc | tail -n1 | cut -f 1 -d ' '

パイプを介してファイルを cat'ing するよりも高速である可能性があります。wc -cバイトをカウントせず、inode からサイズを取得します... または、私の hdd の読み取り速度は 717 GB/s です :-)

$ time wc -c very-big.pcap
5394513291 very-big.pcap
real    0m0.007s
user    0m0.000s
sys     0m0.000s
于 2009-05-23T19:30:55.783 に答える
0

猫 *.dmg | トイレ -c

cat はすべてのファイルを stdout にコピーし、wc はダンプされたファイルのサイズをカウントします。ディスクには何も書き込まれません。

効率的ではありませんが、私でも理解できます:)

于 2009-05-23T19:26:28.787 に答える
0

強化された Ayman の非分岐コマンド:

find . -iname '*.dmg' -ls 3&> /dev/null | 
      awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'

私の最初の返信を修正してくれたAymanに感謝します。

于 2009-05-23T19:54:59.027 に答える