私たちのシステムには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
素早く親切にうまく受けました。
du
findがとにかくすべてのファイルを見つけて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 1
OPの終わりにある「GB」という整数が私に衝撃を与えたので、10**6 = 16x64Kを得るまで遊んだ。