「検索」を選択したファイルのグループの合計サイズ
質問
たとえば、私は速く、私は予想以上にいっぱいに大きなファイルシステムを持っています。だから私は追加されているものを探します:
find /rapidly_shrinking_drive/ -type f -mtime -1 -ls | less
私は、よく、ものをたくさん見つけます。六から七種類のファイルが数千人。私は種類を選び出すし、それらを数えることができます:
find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 -ls | wc -l
しかし、私が本当に欲しいことは、これらのファイルのディスク上の合計サイズを取得することができることです。
find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 | howmuchspace
私は誰かが、1つを持っている場合は、このためのPerlワンライナーにオープンだけど、私は、任意の複数行のスクリプトを必要とするソリューション、またはファイルを使用するつもりはない::検索します。
解決
コマンドは、 du
のディスクの使用状況について説明します。あなたの特定のケースのための使用例:
find rapidly_shrinking_drive/ -name "offender1" -mtime -1 -print0 | du --files0-from=- -hc | tail -n1
(以前、私はdu -hs
を書いたが、その代わりにfind
の入力を無視するようであり、私のマシン上でCWDのサイズをまとめたものである。)
他のヒント
ダーン、Stephan202は正しいです。私はデュ-s(要約)について考えていなかったので、代わりに私がAWKを使用します:
find rapidly_shrinking_drive/ -name "offender1" -mtime -1 | du | awk '{total+=$1} END{print total}'
私も良く、他の答えを好きで、それはほぼ確実に、より効率的です。
GNUで見つける
、
find /path -name "offender" -printf "%s\n" | awk '{t+=$1}END{print t}'
私は(あなたが本当にお奨めfind
で指定されたファイルのリストを持っている場合は、ではないが、最も一般的な)それが最もニーモニックだと考えているため、解答の状態に上記ジェイソンさんのコメントを推進したいと思います:
$ du -hs *.nc
6.1M foo.nc
280K foo_region_N2O.nc
8.0K foo_region_PS.nc
844K foo_region_xyz.nc
844K foo_region_z.nc
37M ETOPO1_Ice_g_gmt4.grd_region_zS.nc
$ du -ch *.nc | tail -n 1
45M total
$ du -cb *.nc | tail -n 1
47033368 total
私はこのすべてのコマンドが、運を試してみました。 だから私は私に答えを与えるこれを発見した。
find . -type f -mtime -30 -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'
また、サイズを抽出するためにls -l
そして、そのサイズを見つけるためにawk
を使用することができます:
find /rapidly_shrinking_drive/ -name "offender1" -mtime -1 | ls -l | awk '{print $5}' | sum
所属していません StackOverflow