検索を使用して、1000日より古いファイルが使用した合計ディスク容量を計算します。

検索を使用して、1000日より古いファイルが使用した合計ディスク容量を計算します。

私たちのシステムには4年以上のデータがあります。 2年前のファイルとディレクトリを新しいリポジトリに移動する必要があります。私たちの要件は、2017年1月から現在までのデータが何テラバイトであるかを知ることです。 2. 個人用フォルダ除外コマンドを検索しようとしましたが、見つかりませんでした。

find . -type f -mtime +1010 ! -path "./home/01_Personal Folder*" -printf '%s\n' \ 
| awk '{a+=$1;} END {printf "%.1f GB\n", a/2**30;}'

答え1

次のように見えます。

find . ! -path "./home/01_Personal Folder*" -type f -mtime +1000 -exec du -ch {} + | grep total

答えは以下に基づいています。ディレクトリブランチ内の特定のファイルのフルサイズを検索する

シェルを説明する注文する。

答え2

...
37M     total
29M     total
42M     total
43M     total
36M     total

real    0m1.271s
user    0m0.561s
sys     0m1.278s

私が得るものは次のとおりです。

time find ~/sda1 -type f -exec du -ch {} +|grep total

今、合計を合計するツールが必要です! (これは-exec...+オーバーフローです)

しかし、一緒に:

time find ~/sda1 -type f -printf "%s\n" | awk '{a+=$1;} END {print a;}'

10483650002

real    0m0.550s
user    0m0.251s
sys     0m0.349s

そして:

]# time du ~/sda1 -sh
11G     /.../sda1

real    0m0.458s
user    0m0.116s
sys     0m0.340s

素早く親切にうまく受けました。


dufindがとにかくすべてのファイルを見つけてstatサイズを無料で提供することは非効率的です。 -c "total"にダウングレードされたfind ... -exec du {} +電卓を使用してください。du

もちろん、ファイルサイズ(バイト単位)とディスク使用量(ブロック単位)には若干の違いがあります。


これは元の `find ... -printf "%s\n" | awk '{...} END {...}'の仕組みを説明するためのものです。

]# find ~ -maxdepth 1 -printf "%s\n" | awk '{a+=$1;} END {print a;}'
1093990
]# find ~ -maxdepth 1 -printf "%s\n" | awk '{a+=$1;} END {printf "%x\n",a;}'
10b166

今回が初めてですawk

私はこれをでテストし、~ -maxdepth 1OPの終わりにある「GB」という整数が私に衝撃を与えたので、10**6 = 16x64Kを得るまで遊んだ。

関連情報