खोज आदेश के साथ खोज से खरीदे गए और खरीदे गए फ़ोल्डरों को कैसे बाहर करना है?


10

मैं एक स्क्रिप्ट को निष्पादित करना चाहता था जो एक यादृच्छिक निर्देशिका पथ चुनती है:

find / -type d | shuf -n1 

दुर्भाग्य से मुझे कुछ निर्देशिकाओं के प्रवेश के निषेध के बारे में त्रुटि संदेश मिलते हैं।

मैं खोज से किसी निर्देशिका को खोज से कैसे निकाल सकता हूं?

जवाबों:


13

Linux पर विशिष्ट पथों को बाहर करने के लिए:

find / -path /sys -prune -o -path /proc -prune -o -type d

एक अन्य तरीका यह है कि findविभिन्न फाइल सिस्टम के तहत पुनरावृत्ति न करने के लिए कहा जाए ।

find / -xdev -type d

आप फ़ाइल नामों के डेटाबेस का पता लगाने के लिए भी उपयोग कर सकते हैं (आमतौर पर रात को अपडेट किए जाने पर, आप updatedbलाइव सिस्टम के बजाय इसे मैन्युअल रूप से अपडेट कर सकते हैं )।

locate '*' | shuf -n 1

महान, छोटा और व्यावहारिक। find / -xdev -type d ही काम करता है, लेकिन / -xdev -type d खोजें | shuf -n 1 त्रुटि संदेश प्रदर्शित करता है।
अब्दुल अल हज़्रेड

1
@AbdulAlHazred ने कहा कि आपने क्या संदेश नहीं दिया, लेकिन मैं अनुमान लगा रहा हूं कि वे "अनुमति से वंचित" त्रुटियां हैं। या तो कमांड को रूट के रूप में चलाएं या केवल त्रुटियों को अनदेखा करके उन्हें stderr पर भेजें find / -xdev -type d 2>/dev/null:।
terdon

1
नहीं तो आप सिर्फ करते जा सका find / \( -path /sys -o -path /proc \) -prune -o -type dहोगा यदि आप की तरह अधिक dirs बाहर करना चाहते हैं उपयोगी हो /devया /tmp, आदि
BrainStone

6

GNU के साथ आप भी इस तरह से रेगेक्स विकल्प का उपयोग कर सकते हैं:

find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d

यह सबसे अच्छा तरीका है, अब तक (शेख़ी: तो वहाँ एक गन्नू विकल्प है जो किसी अन्य OS पर जैसे गनु लीनक्स को खोजने / प्रयोग करने योग्य बनाता है, जिसमें एक चमकदार / खरीद कार्यान्वयन नहीं था ;-)
फ्लोरियन हीगल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.