web-dev-qa-db-ja.com

「du」からのすべての許可拒否メッセージを除外する

多くのUnixユーザーアカウントのディスク使用量を評価しようとしています。単純に、次のコマンドを使用しています。

du -cBM --max-depth=1 | sort -n

しかし、私は以下のような多くのエラーメッセージを見てきました。このような「許可が拒否されました」メッセージをすべて表示から除外するにはどうすればよいですか?

du: `./james/.gnome2': Permission denied

「find」を「du」に置き換えることで、私のリクエストは次のリストに非常に似ている可能性があります。

すべての「許可」拒否メッセージを「検索」から除外するにはどうすればよいですか?

次のスレッドは機能しません。私はbashを使用していると思います。

-exclude、grep -vまたはsedを使用してduコマンド出力から隠しファイルを除外する

38
Wen_CSE
du -cBM --max-depth=1 2>/dev/null | sort -n 

またはbashの方が良い(最後のスニペットのようにすべてではなく、この特定のエラーを除外するだけです)

du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n 
59

2>/dev/nulはエラーメッセージのみを非表示にします。

コマンドduは、常にディレクトリ上で実行を試みます。あなたが何千ものダースを持っていると想像してください?

duにevalが必要です。権限がない場合は実行し、次のディレクトリに進みます...

3
Cristian T

2>/dev/nullは機能しません。おそらく、使用しているシェルはbashではありません。

使用しているシェルを確認するには、ps -p $$https://askubuntu.com/a/590903/130162 を参照)

表示したくない行のみを除外する簡潔なものを使用します。 stderrをstdoutにリダイレクトし、grepですべての「拒否」を除外します。

du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n 
0
Claire T