मैं खोज कार्यक्रम से "अनुमति अस्वीकृत" प्रिंटआउट कथन कैसे निकालूं?


38

कोड

find / -name netcdf

उत्पादन

find: `/root/.dbus': Permission denied
find: `/root/.gconf': Permission denied
find: `/root/.gconfd': Permission denied
find: `/root/.gnome': Permission denied
find: `/root/.gnome2': Permission denied
find: `/root/.gnome2_private': Permission denied

जवाबों:


35

उन संदेशों को stderr पर भेजा जाता है, और बहुत अधिक केवल उन संदेशों को आमतौर पर उस आउटपुट स्ट्रीम पर देखा जाता है। आप इसे बंद कर सकते हैं या इसे कमांड-लाइन पर पुनर्निर्देशित कर सकते हैं।

$ find / -name netcdf 2>&-

या

$ find / -name netcdf 2>/dev/null

इसके अलावा, यदि आप रूट डायरेक्टरी (/) को सर्च करने जा रहे हैं, तो यह प्रक्रिया को अच्छा करने के लिए अक्सर अच्छा होता है ताकि सभी संसाधनों का उपभोग न करें।

$ nice find / -name netcdf 2>&-

यह सीपीयू पर अन्य प्रक्रियाओं को अधिक समय देने की प्रक्रिया की प्राथमिकता को कम करता है। बेशक, अगर सीपीयू का उपयोग कुछ और नहीं कर रहा है, तो यह कुछ भी नहीं करता है। :) तकनीकी होने के लिए, NI मान (से देखा गया ps -l) PRI मान बढ़ाता है। कम पीआरआई मूल्यों की एक उच्च प्राथमिकता है। तुलना ps -lके साथ nice ps -l


1
मुझे चेतावनी देना पसंद नहीं है। उन्हें संभालना काफी बेहतर है। इसके अलावा, कोई भी क्षेत्र में यहाँ भागने नहीं है।
लेओ लेपोल्ड हर्ट्ज़ '

1
@ LéoLéopoldHertz 준영 ठीक है ... यदि आप इस कार्यक्रम उत्पादन नहीं देख सकते क्योंकि तुम्हारा स्क्रीन त्रुटि बकवास .. यह मामला है जो से भरा हुआ है ...
chrips

20

मैं केवल इस उत्तर को @Gilles द्वारा बहिष्कृत पथों में इंगित करना चाहूंगा जो अनुमतियों के बारे में शिकायत करते हैं - यूनिक्स और लिनक्स स्टैक एक्सचेंज ; इसमें मूल रूप से एक निर्माण शामिल है findजो इसे अपठनीय निर्देशिकाओं में नहीं उतरता है, और इस अर्थ में, शायद थोड़ा तेज भी है।

यह मेरे लिए काम करने लगता है:

GNU findया किसी अन्य के साथ findजो समर्थन करता है -readableऔर -executableभविष्यवाणी करता है:

find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print

या यह भी:

find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print

किसी कारण के लिए, मुझे सभी को जोड़ना होगा g+r,u+r,o+r(उसके लिए शॉर्टकट a+r), अन्यथा यदि उनमें से एक को छोड़ दिया जाता है, तो भी मुझे "अनुमति अस्वीकृत" हिट मिल सकती है।

यहाँ मैं कैसे देखते हैं कि यह (ध्यान दें में खराबी है -a(और) ऑपरेटर में findहै दो विधेय के बीच निहित ):

find /         # find starting from path /
  -type d        # match type is directory
  ! -perm -a+r   # (and) match not permissions of `r`ead present 
  -prune         # ignore what matched above and do not descend into it
  -o             # or (whatever didn't match above)
  -type f        # match type is file
  -name 'netcdf' # (and) match name is 'netcdf'
  -print         # print what matched above

ध्यान दें कि आखिरी के बिना -print, मुझे दिखाए गए कुछ अतिरिक्त आइटम मिलते हैं (जिनका कोई लेना-देना नहीं है -name 'netcdf'); यह -printसुनिश्चित करता है कि केवल नाम मिलान मुद्रित हो (यदि कोई हो)।


2
अगर find(1)एक निर्देशिका में नहीं उतर सकते, तो यह नहीं होगा। इसलिए पहले से चेक करना कि क्या यह काम कर सकता है या नहीं (दो बार चेक करें), और इस तरह इसे धीमा कर दें।
वॉनब्रांड

3
यदि आप findबाहर निकलने की स्थिति पर भरोसा करते हैं तो @vonbrand आवश्यक है , क्योंकि ये अनुमति त्रुटियां findगैर-शून्य स्थिति से बाहर निकलती हैं
अर्नेस्ट ए

मुझे आपका प्रस्ताव काम नहीं मिल रहा है। अपेक्षित आउटपुट भर जाने पर मुझे कोई आउटपुट नहीं मिलता है। unix.stackexchange.com/q/290791/16920 हालांकि, मुझे लगता है कि अन्यथा मुझे लगता है कि आपका तरीका सबसे अच्छा तरीका है।
लेओ लेपोल्ड हर्ट्ज़ o

1
वाह, मैं विश्वास नहीं कर सकता कि इस उत्तर को खोजना इतना कठिन था, अब मैं चाहता हूं कि मैं इसे और अधिक बढ़ा सकूं।
वेज

8

locate(1)इसके बजाय उपयोग करें :

$ locate netcdf

यह केवल आपको वह फाइलें दिखाएगा जो आपके उपयोगकर्ता देख सकते हैं।


1
यह मानता है कि updatedbनियमित रूप से चल रहा है। सभी लिनक्स सिस्टम पर ऐसा नहीं है।
अरसेज

3
यदि पता (1) स्थापित है, तो इसके डेटाबेस को समय-समय पर अद्यतन किया जाना चाहिए । यदि ऐसा नहीं हो रहा है, तो मैं यह पता लगाऊंगा कि एक गलतफहमी के बजाय एक गलती का पता लगाएं (1)। इसके अतिरिक्त, इसे केवल उन दुर्लभ मामलों में हाथ से चलाने में कुछ मिनट लगते हैं, जहां आप एक ऐसी फ़ाइल की तलाश में हैं जिसे अंतिम DB अपडेट के बाद जोड़ा गया था। मैं खुद को ऐसा करते हुए पाता हूं कि शायद प्रति वर्ष आधा दर्जन बार, एक ओवरहेड आसानी से ढूंढने की गति (1) से अधिक (1) के लाभ के लिए भुगतान किया जाता है।
वारेन यंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.