2013-02-28 3 views
25

से सभी अनुमति अस्वीकार संदेशों को छोड़ दें मैं कई यूनिक्स उपयोगकर्ता खातों के डिस्क उपयोग का मूल्यांकन करने की कोशिश कर रहा हूं। सीधे शब्दों में, मैं निम्न आदेश का उपयोग कर रहा:"डु"

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

लेकिन मैं नीचे जैसे कई त्रुटि संदेश देखा है। मैं डिस्प्ले से ऐसे सभी "अनुमति अस्वीकृत" संदेशों को कैसे बहिष्कृत कर सकता हूं?

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

मेरा अनुरोध बहुत निम्न सूची के समान है, की जगह हो सकता है "लगता है" को "डु"।

How can I exclude all "permission denied" messages from "find"?

निम्नलिखित धागा काम नहीं करता। मुझे लगता है कि मैं बैश का उपयोग कर रहा हूँ।

Excluding hidden files from du command output with --exclude, grep -v or sed

उत्तर

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

या बैश में बेहतर

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

कोशिश कर सकते हैं मैं वास्तव में क्या चाहते हैं। धन्यवाद! –

1

2>/dev/नुल केवल त्रुटि संदेश छुपाता है (बस इस विशेष त्रुटि, नहीं पिछले टुकड़ा की तरह सभी को फ़िल्टर)।

कमांड डु हमेशा निर्देशिका पर चलाने का प्रयास करें। कल्पना कीजिए कि आपके पास हजारों डीआईआर हैं?

डु eval की जरूरत है, अगर आप persmission चलाने यदि नहीं, तो अगले dir के साथ पालन करें ...

0

मैं कुछ संक्षिप्त कि शामिल नहीं केवल लाइनों आप नहीं देखना चाहते हैं, का उपयोग करेंगे। stdout में stderr पुन: निर्देशित है, और सभी को बाहर करने के grep "अस्वीकृत" रों:

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

तो 2>/dev/null काम नहीं करता है, शायद खोल आप उपयोग कर रहे bash नहीं है।

क्या शेल का उपयोग कर रहे जाँच के लिए, आपको ps -p $$ (https://askubuntu.com/a/590903/130162 देखें)

संबंधित मुद्दे