質問

たとえば、私は速く、私は予想以上にいっぱいに大きなファイルシステムを持っています。だから私は追加されているものを探します:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top