लिनक्स पर एक निर्देशिका कैसे खोजें?


453

मेरे पास Suse Linux 10.3 वाला VPS है ।

मैंने SSH / पोटीन के माध्यम से लॉग इन किया है और यह जानने की कोशिश कर रहा हूं कि मेरी वेब फाइलें कहां स्थित हैं।

चूंकि मैं httpdocs नामक एक निर्देशिका में FTP के माध्यम से अपलोड कर रहा हूं , इसलिए मुझे लगता है कि यह निर्देशिका कहीं मौजूद है।

मेरी Google खोजों ने मुझे ऐसा करने के लिए सिखाया है, मेरी मूल निर्देशिका पर जाएं और टाइप करें:

find httpdocs -type d

लेकिन यह कहता है " ऐसी कोई फ़ाइल या निर्देशिका नहीं "।

मुझे यह निर्देशिका कैसे मिल सकती है?


4
किसी की सोच के मामले में, प्रश्न में आदेश -type dनिर्देशिका प्रविष्टि httpdocs(वर्तमान कामकाजी निर्देशिका के सापेक्ष, आमतौर पर लेकिन जरूरी नहीं कि एक निर्देशिका) में सभी निर्देशिकाओं को पाता है । यह त्रुटि संदेश के साथ विफल रहता है क्योंकि httpdocsसिस्टम की रूट निर्देशिका में कोई निर्देशिका प्रविष्टि नहीं है , और इसलिए खोज के लिए कोई प्रारंभिक बिंदु नहीं है।
डैनियल बेक

जवाबों:


609

यह है:

find / -type d -name 'httpdocs'

पहला पैरामीटर "/" जहां देखने के लिए है, इस मामले में "/" यह पूरी प्रणाली है।

-नाम मामले को नजरअंदाज करने के लिए हो सकता है

यह भी -टाइप अनिवार्य नहीं है

उपयोग: आदमी अधिक विकल्पों के लिए खोज करता है


2
ढूँढें / -नाम 'httpdocs' महान धन्यवाद काम करता है
एडवर्ड

91
यह साधारण खोजों के लिए मायने नहीं रखता है, लेकिन अधिक जटिल खोज आदेशों के लिए, यह ध्यान देने योग्य है कि चीजों का मूल्यांकन उस क्रम में किया जाता है, जो वे कमांडलाइन पर हैं। तो, आप -type d (केवल निर्देशिका) से पहले -name देना चाह सकते हैं, ताकि चीजों को गति मिल सके। फिर, यह यहाँ बहुत ज्यादा मायने नहीं रखता है, लेकिन अधिक जटिल खोजों में शामिल होने पर यह खोज की गति में काफी सुधार कर सकता है।
डोमिनिक ईडन

14
वास्तव में, -nameपरीक्षण अन्य परीक्षणों की तुलना में तेजी से है क्योंकि -nameनिर्देशिका की लिस्टिंग के खिलाफ मिलान किया जाता है, जो पहले से डिस्क से लोड है, और अन्य परीक्षणों stat(2)को फ़ाइल जानकारी प्राप्त करने के लिए प्रदर्शन करने की आवश्यकता है । stat()किसी फ़ाइल के लिए पहली कॉल के बाद, बाद के परीक्षण मेमोरी से प्राप्त होते हैं, जैसे -type f -mtime -10:।
12

24
यदि आप संपूर्ण फाइलसिस्टम, विशेष रूप से सर्वर पर एक खोज करने जा रहे हैं, तो आमतौर पर इसका उपयोग करना अच्छा होता है, niceइसलिए यह खोज अधिक महत्वपूर्ण प्रक्रियाओं से बहुत अधिक संसाधन नहीं लेती है:nice find / ...
Arcege

16
मैं अपने खोज परिणामों को सभी अनुमति त्रुटियों में छिपे होने से बचने के लिए 2> / dev / null संलग्न करूंगा।
जेसन येओ

63

यह कमांड आपको मिलनी चाहिए जो आप ढूंढ रहे हैं:

find / -type d -name httpdocs

जो httpdocs के नाम से निर्देशिकाओं के लिए आपके सर्वर के रूट से खोज करेगा या यदि आप वर्तमान निर्देशिका से खोजना चाहते हैं तो '/' को 'a' से बदलें।

एक और कमांड जिसे आप आज़मा सकते हैं, यह पता लगाएं कि आप कुछ ऐसा करेंगे:

locate httpdocs

पता लगाएँ httpdocs मुझे बताता है "पता लगाएँ: कमांड नहीं मिला"
एडवर्ड टंगू

4
"पता लगाएं" कमांड का उपयोग करने वालों के लिए (यह आपके सिस्टम में मौजूद है), यह सुनिश्चित करें कि यह जो डेटाबेस दिखता है वह अप-टू-डेट है; आम तौर पर कुछ क्रॉन जॉब इसकी देखभाल करती हैं। अन्यथा, "अपडेटेड" (रूट किया जा रहा है) चलाएं। फिर अपनी आवश्यक "पता लगाएँ <somefile>" चलाएँ। यह हाल ही में जोड़ी गई फ़ाइलों / डायर को खोजने के लिए आवश्यक है।
डेविड रामिरेज़

पता लगाने के लिए +1। यह बहुत तेज़ है लेकिन केवल तभी जब इसका सूचकांक अद्यतित हो। सौभाग्य से, "httpdocs" जैसी कोई चीज़ अक्सर स्थान नहीं बदलेगी। यदि आप किसी मशीन पर बार-बार फ़ाइलों की खोज करने की योजना बना रहे हैं, तो अपडेट किए गए क्रॉन जॉब को सेट करने के लिए आवश्यक कुछ मिनटों की कीमत है।
डग हैरिस

1
कई मामलों में भी, कई परिणाम लौटाएंगे क्योंकि उस निर्देशिका में सभी 100k फाइलें दिखाई देंगी। इस विशेष मामले में यदि प्रत्येक उपयोगकर्ता के पास 100 या 1000 की फाइलों के साथ अपने स्वयं के httpdocs हैं, तो ओपी चाहता है कि परिणाम शायद खो जाएगा।
जिस्तेतिदत्त

+1 का पता लगाने के लिए ... मैं अपने डेटाबेस को अपडेट रखता हूं इसलिए यह कमांड बहुत उपयोगी है ... बहुत अच्छा विचार है।
निकोरेलियस

27
find / -type d -name httpdocs 2> /dev/null

यह आपके द्वारा की जाने वाली सभी त्रुटि संदेशों को समाप्त कर देगा (पढ़ें, हमेशा) रूट उपयोगकर्ता के रूप में ऐसा न करने पर प्राप्त करें। इस तरह से करने की सलाह देंगे।


2
2> /dev/nullविकल्प बहुत उपयोगी है। अन्यथा वांछित परिणाम देखना कठिन हो सकता है ...
गोटलिब नॉटशैनेल


13

"केस असंवेदनशील" पैटर्न और वाइल्डकार्ड्स के उपयोग की खोज करने के लिए पैरामीटर -iname जानना महत्वपूर्ण है: *,; आदि;

दो उदाहरण:

सभी फाइलें / रूट से खोजें जिसमें स्ट्रिंग "लिनक्स" शामिल है, स्थिति असंवेदनशील है:

find  /root -type f -iname "*linux*"

सभी निर्देशिकाएं / रूट से खोजें जिसमें स्ट्रिंग "लिनक्स" शामिल है, स्थिति असंवेदनशील:

find  /root -type d -iname "*linux*"

यहां से निकाला गया:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


यह प्रश्न उस निर्देशिका को खोजने के बारे में है जिसका नाम आप जानते हैं, न कि ऐसी निर्देशिका कैसे खोजें जिसका नाम आप जानते हैं (लगभग)। इसके अलावा, स्वीकृत जवाब (6 साल पहले से!) पहले से ही -inameकेस-असंवेदनशील विकल्प के रूप में उल्लेख करता है -name
जी-मैन

9

आपके पास लगभग है। सही सिंटैक्स होगा:

find / -type d -name httpdocs

निर्देशिका के तहत होने की संभावना है /var/www/


मुझे बताता है कि "पथ को अभिव्यक्ति से पहले होना चाहिए"
एडवर्ड तुंगाय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.