2014-07-09 7 views
30

आदर्श रूप में, मैं मिलान फ़ाइल नाम/निर्देशिका साथ रास्ते रिपोर्ट करने के लिएमैं एक फ़ाइल/निर्देशिका कैसे ढूंढ सकता हूं जो लिनक्स कमांड लाइन पर कहीं भी हो सकती है?

find [file or directory name] 

जैसे प्रोग्राम का उपयोग करने में सक्षम होगा। दुर्भाग्यवश ऐसा लगता है कि यह केवल मौजूदा निर्देशिका की जांच करता है, न कि संपूर्ण फ़ोल्डर।

मैंने भी पता लगाने की कोशिश की है और जो, लेकिन फ़ाइल को कोई भी नहीं मिला है, भले ही मैं इसे कंप्यूटर पर कहीं भी जानता हूं।

+0

यकीन है कि समस्या क्या है में उप निर्देशिका उपलब्ध खोज करेंगे के रूप में '-name" फ़ाइल नाम "लगता है' रिकर्सिवली फ़ाइलें पाता वर्तमान कार्यशील निर्देशिका में। – foips

+0

क्षमा करें अगर यह स्पष्ट नहीं है, तो फ़ाइल वर्तमान कार्यशील निर्देशिका में नहीं हो सकती है। यह कंप्यूटर – johncorser

उत्तर

38

"दुर्भाग्य से ऐसा लगता है कि यह केवल वर्तमान निर्देशिका की जांच करता है, न कि संपूर्ण फ़ोल्डर"। संभवतः आपका मतलब है कि यह उपनिर्देशिका में नहीं दिखता है। इसे ठीक करने के find -name "filename"

का उपयोग करते हैं सवाल में फ़ाइल वर्तमान कार्यशील निर्देशिका में नहीं है, आप

find/-name "filename" 

यह भी find/-name "*.pdf" की तरह सामान के साथ काम करता है, आदि कभी कभी मैं पसंद के माध्यम से अपने पूरे मशीन को खोज सकते हैं पाइप के लिए है कि एक ग्रेप बयान में भी (के बाद से, कम से कम मेरी मशीन पर, यह परिणाम पर प्रकाश डाला गया), तो मैं जैसे

find/-name "*star*wars*" | grep star 

ऐसा करने से या कुछ और के साथ अंत एक समान विधि सिर्फ मुझे मदद करता है तुरन्त लगता है फ़ाइल नाम और रेको अगर यह वास्तव में वह फ़ाइल है जिसे मैं ढूंढ रहा हूं तो gnize।

+0

पर कहीं भी हो सकता है धन्यवाद। जिज्ञासा से, क्या यह आंशिक फ़ाइल नामों के लिए काम करेगा? – johncorser

+2

हां, बशर्ते आप तारांकन का उपयोग करें। ध्यान दें कि यह मामला संवेदनशील है। अगर मेरे पास STARTUP नामक एक फ़ाइल है, तो मैं ढूंढना चाहता हूं, 'ढूंढें/नाम "* एआरटी *" 'इसे मिल जाएगा।ध्यान दें कि 'art/* "* art *" उस फ़ाइल को नहीं ढूंढ पाएगा, क्योंकि "कला" कम मामला है, जबकि "STARTUP" ऊपरी मामला –

+1

@johncorser है, आपको खोजने के लिए किसी प्रकार का आरई भी उपयोग करने में सक्षम होना चाहिए आपको क्या चाहिए –

4

जरूरत कुछ dirs में नेस्ट लगाना चाहते हैं कि:

find/-type f -wholename "*dirname/filename" 

या जुड़े dirs:

find/-type d -wholename "*foo/bar" 
2

find आदेश लंबा समय लगेगा, फ़ाइल के लिए खोज करने के लिए सबसे तेज़ तरीका locate आदेश का उपयोग कर रहा है , जो एक अनुक्रमित डेटाबेस में फ़ाइल नाम (और पथ) की तलाश करता है (कमांड updatedb द्वारा अपडेट किया गया)।

परिणाम एक सरल कमांड के साथ तुरंत दिखाई देगा:

locate {file-name-or-path} 

तो आदेश नहीं मिला है, तो आप mlocate पैकेज स्थापित और updatedb आदेश चला पहले पहली बार के लिए खोज डेटाबेस तैयार करने के लिए की जरूरत है।

अधिक यहाँ विस्तार: http://itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/

0

उदाहरण नीचे वर्तमान निर्देशिका में विशिष्ट फ़ोल्डर खोजने के लिए मदद मिलेगी। यह उदाहरण केवल वर्तमान प्रत्यक्ष खोज और यह, वर्तमान निर्देशिका

#!/bin/bash 

result=$(ls -d operational) 

echo $result 

test="operational" 

if [ "$result" == "$test" ] 
then 
    echo "TRUE" 
else 
    echo "FALSE" 
fi 
नहीं
संबंधित मुद्दे