4

ディレクトリによってディスク上で使用されている合計ストレージを表示する小さなスクリプトを作成しようとしています。それを理解するために、du コマンドを使用しています。ただし、DUが非常に大きなディレクトリで作業しているときにユーザーにフィードバックを提供するために、パイプを介して出力を実行し、行数を表示したいと考えています。これにより、ユーザーはフォルダーの数とディレクトリにあるファイル。これが私のコードです:

du -ah | pv -l | tail -n 1 | sed 's/\.$//'

ただし、pv コマンドは行を使用しますが、パイプを介して合計データを行ではなくキロバイトで表示します。バイトではなく、パイプされた行の総数を表示する方法はありますか。もしかして違うコマンド?

ありがとう!

4

4 に答える 4

7

du-s合計のみを表示するフラグが付属しているため、代わりに次のようにします。

$ du -sh /tmp | cut -f1
4.9M

についてpv

ただし、pv コマンドは行を使用しますが、パイプを介して合計データを行ではなくキロバイトで表示します。

本気ですか?

$ find /tmp/ | pv >/dev/null
44.6kiB 0:00:00 [3.19MiB/s] [   <=>  
^^^^^^^

$ find /tmp/ | pv -l >/dev/null
1.24k 0:00:00 [86.5k/s] [   <=>  
^^^^^

$ find /tmp/ | wc -l
1237
^^^^

私には線のように見えます(期待どおりに機能しています)?

于 2013-09-11T13:27:05.337 に答える
0

これを試して:

a=`find . -iname -prune -o -type f -print` 
c=`printf "%b\n" "$a" | du -ah`
echo "Displaying all the files on your machine with respect to their size********************************************"
printf "%b\n" "$c" | sed '$d'
echo "Finished displaying********************************************"
echo ""
b=`find . -iname -prune -o -type f -print | du -ah | wc -l`
echo "Total number of files exist on your machine is:" $b
totalSize=`printf "%b\n" "$c" | tail -1`
echo ""
echo "Total number of space occupied on disk in KB" $totalSize
于 2013-09-11T13:52:57.070 に答える