2009-07-15 1 views
32

例えば、予想していたよりも速くいっぱいになる大きなファイルシステムがあります。だから私は追加されているものを探します:'find'で選択されたファイルグループの合計サイズ

find /rapidly_shrinking_drive/ -type f -mtime -1 -ls | less 

そして私はよく、たくさんのものを見つける。 6つの7種類のファイルの何千もの。私は開いている

find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 | howmuchspace 

:私は種類を選び出すし、それらを数えることができます。

find /rapidly_shrinking_drive/ -name "*offender1*" -mtime -1 -ls | wc -l 

をしかし、私が本当に欲しいことは、これらのファイルのディスク上の合計サイズを取得することができることですこのためにPerlの1つのライナーに誰かがいる場合は、私は複数行のスクリプトやFile :: Findを含むソリューションを使用しません。

答えて

55

コマンドduは、ディスクの使用状況を示します。あなたの特定のケースのための使用例:

find rapidly_shrinking_drive/ -name "offender1" -mtime -1 -print0 | du --files0-from=- -hc | tail -n1 

は(以前私がdu -hsを書いたが、代わりにfindの入力を無視するようであり、私のマシン上でCWDのサイズをまとめたもの。)

+0

非常に良い。ただし、 'find'( "--files0-from =")という残酷なキーワードを覚えているのは、実際にはawkシーケンスを覚えているよりも簡単かもしれません。 –

+1

'du'バージョン8.13を使用すると、次の結果が得られます:' du -ch/rapid_shrinking_drive/* offender1 * | tail -n1' – jason

+2

私のマシンは '--files0-from ='オプションが嫌いです。 ; -/ –

11

ダーンは、Stephan202があります右。私はデュ-s(要約)について考えていなかったので、代わりに私がAWKを使用:

find rapidly_shrinking_drive/ -name "offender1" -mtime -1 | du | awk '{total+=$1} END{print total}' 

私も良く、他の答えを好きで、それはほぼ確実に、より効率的です。

+2

検索で-execを使用する別の方法: find fast_shrinking_drive/-name "offender1" -mtime -1 -exec du {} \; | awk '{total + = $ 1} END {print total}' ' – Sylvain

+1

は、最終出力番号を103Mのような人間が読める形式に変換できますか? – Zen

-1

また、サイズを抽出するためにawkそして、そのサイズを見つけるためにls -lを使用することができます。

find /rapidly_shrinking_drive/ -name "offender1" -mtime -1 | ls -l | awk '{print $5}' | sum 
+0

これは間違っています。 ls -lは必要ありません。 – ghostdog74

+0

このようにするなら、xargs – spookypeanut

6

GNUで見つけ、

find /path -name "offender" -printf "%s\n" | awk '{t+=$1}END{print t}' 
+0

+1をGNU findの明示的な言及に使う必要があります。 (悪くすると、そのように移植性が低下します)。 – Hennes

1

を、私はこのすべてのコマンドが、運を試してみました。私はそれがあれば、ほとんどのニーモニック(ではないが、最も一般的なのです信じているので、私は、答えの状態に上記ジェイソンさんのコメントを推進したいと思います

find . -type f -mtime -30 -exec ls -l {} \; | awk '{ s+=$5 } END { print s }' 
3

: は、だから私は私に答えを与えるこれを発見しましたあなたは本当に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 
関連する問題