सवाल मैक ओएसएक्स टर्मिनल में फ़ाइल नाम से फ़ाइल कैसे प्राप्त करूं?


मैं फ़ाइल नाम के साथ अपनी मैकबुक पर एक फाइल ढूंढना चाहता हूं: abc.dmg। मैंने स्पॉटलाइट का उपयोग करने की कोशिश की है, लेकिन इसे नहीं मिला। जब मैंने खोजने की कोशिश की, और इस्तेमाल किया: find -name abc.dmg -path /, मुझे त्रुटियां मिलीं।

मैक ओएसएक्स टर्मिनल पर खोज कमांड के साथ फाइलनाम द्वारा फाइल ढूंढने के लिए उचित वाक्यविन्यास क्या है?


84
2017-12-28 17:42


मूल


@VxJasonxV ऐप्पल प्रश्न सुपर उपयोगकर्ता के लिए विषय पर 100% हैं, और हर ऐप्पल प्रश्न वहां स्थानांतरित करने की कोई वास्तविक आवश्यकता नहीं है। आईफोन या आईपैड प्रश्न तब भी चले जाएंगे जब आवश्यक हो। - BinaryMisfit
यह विषय-वस्तु होने का इतना कारण नहीं था, लेकिन तथ्य यह है कि इस सामान्य विषय के लिए एक और विशिष्ट विषय / साइट है। - VxJasonxV
@Diago: मेटा या चैट पर इसके बारे में कोई चर्चा हुई है? बस सोच रहा है क्योंकि AFAIK apple.SE बीटा से जल्द ही लॉन्च हो जाएगा, इसलिए सभी को एक ही पृष्ठ पर प्राप्त करना अच्छा लगेगा। - Robert S Ciaccio
@calavera। काफी पुरानी चर्चा लेकिन प्रासंगिक पाया जा सकता है यहाँ। ऐप्पल एसई, उबंटू एसई और लिनक्स एसई सब कुछ सुपर यूजर की तारीफ करने के लिए है, लेकिन किसी भी तरह से हम उपयोगकर्ताओं को स्थानांतरित करने के लिए मजबूर नहीं करना चाहते हैं। मैं ऐप्पल के बजाय यहां अपने ऐप्पल प्रश्न पूछना पसंद करता हूं, क्योंकि मैं 3 अलग-अलग ऑपरेटिंग सिस्टम का उपयोग करता हूं। यदि मेरे पास एक बहुत ही विशिष्ट सवाल है, तो मैं इसे एक और विशेष साइट पर पूछूंगा। - BinaryMisfit


जवाब:


अपने सबसे सरल रूप में, find एक पैरामीटर लेता है: पथ। अपने वास्तव में उपयोगी रूप में, यह मानदंड को संकुचित करके पथ लेता है।

इस प्रकार, आप चाहते हैं:

  • find (कार्यक्रम)
  • / (राह)
  • तथा -name abc.dmg (मानदंड)।

find / -name abc.dmg


117
2017-12-28 17:45



पूरे ड्राइव को खोजते समय आपको अनुमति त्रुटियों से इनकार कर दिया जा सकता है लेकिन उन्हें तब तक अनदेखा किया जा सकता है जब तक कि आप फ़ाइल को प्रतिबंधित फ़ोल्डर में न होने दें। यदि ऐसा है तो उपयोग करें sudo ढूंढें / नाम abc.dmg - Chris Nava
कोशिश की, लेकिन कोई परिणाम नहीं। - SPRBRN
संभवतः, आपके पास अपने कंप्यूटर पर abc.dmg नाम की एक फ़ाइल नहीं है। खोज केस असंवेदनशील बनाने के लिए आप नाम के बजाय -नाम का उपयोग कर सकते हैं। मुझे बहुत संदेह है कि आप वास्तव में "abc.dmg" खोज रहे हैं, और यह देखते हुए (संभवतः) तथ्य यह है कि आपको यह बताना मुश्किल है कि वास्तविक समस्या के बिना आपकी समस्या क्या है। - VxJasonxV
@rxt: अगर पाते हैं कि यह नहीं मिला है, तो यह नहीं है ... - Robert S Ciaccio
यह देखते हुए कि ओपी रिपोर्ट ने प्रश्न पाठ में खोजने की कोशिश की है, यह तर्क देने योग्य है कि तर्कों का क्रम find  मामलों। यदि होना चाहिए find [path]+ [selection, grouping, and actions]। - dmckee


find . -name '*.csv' उदाहरण के लिए वाइल्डकार्ड के साथ मेरे लिए काम किया। ओपी भी इस्तेमाल कर सकता है find . -name '*.dmg' अपनी वर्तमान निर्देशिका की जांच करने के लिए, मानते हुए कि वह अंदर था /


16
2017-10-27 14:11





mdfind कमांड स्पॉटलाइट डेटाबेस का उपयोग करता है

http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html


7
2017-12-28 19:21



लेकिन ओपी के मूल प्रश्न के अनुसार, स्पॉटलाइट इसे नहीं ढूंढता है। - VxJasonxV


आप इसका उपयोग कर सकते हैं locate आदेश।

locate abc.dmg

6
2017-12-28 17:44



ध्यान दें osx टैग। स्लॉकेट डीबी डिफ़ॉल्ट रूप से पॉप्युलेट नहीं करता है। - VxJasonxV
डेटाबेस बनाने के बाद, कोशिश की, लेकिन कोई परिणाम नहीं। - SPRBRN
अगर locate तथा mdfind दोनों असफल हो जाते हैं, संभावना है कि फ़ाइल आपकी मशीन पर नहीं है। या इसका नाम यह नहीं है कि आप इसका नाम कैसे सोचते हैं। शायद सभी डीएमजी खोज रहे हैं आपका अगला कदम हो सकता है? - peelman


सबसे आसान तरीका (जो मुझे यकीन है कि आपने पहले ही कोशिश की है, लेकिन हे, मुझे इसे किसी भी थ्रेड में जोड़ने दें) किसी भी खोजक विंडो के ऊपरी दाएं भाग में खोज बॉक्स में abc.dmg दर्ज करना है, फिर "फ़ाइल चुनें" दिखाई देने वाले खोज बार पर विकल्पों से "नाम"।

टर्मिनल की कोई ज़रूरत नहीं है।

यह भी याद रखें कि स्पॉटलाइट केवल पैनल इंडेक्स निर्देशिका स्पॉटलाइट कंट्रोल पैनल में निर्दिष्ट है और abc.dmg उन निर्देशिकाओं में से एक में नहीं हो सकता है।

अगर मैं गलत हूं तो मुझे सही करें, लेकिन मुझे लगता है कि खोज कमांड को यह जानने की जरूरत है कि आउटपुट कैसे करें:

find / -name abc.dmg -print

... किसी भी परिणाम टर्मिनल (अनुमति त्रुटियों सहित) को मुद्रित करना चाहिए।

अगर आप अनुमति त्रुटियों को नहीं चाहते हैं और अन्य उपयोगकर्ता निर्देशिका खोजना चाहते हैं तो:

sudo find / -name abc.dmg -print

3
2017-12-28 22:53





आप प्रासंगिक फ़ाइल को तुरंत ढूंढने और खोलने के लिए निम्न कमांड लाइन फ़ंक्शंस का उपयोग कर सकते हैं। स्पॉटलाइट विंडो में क्वेरी की लंबी स्ट्रिंग टाइप करने से मुझे यह आसान लगता है।

निम्नलिखित कार्यों को जोड़ें ~/.bash_aliases

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

अब, या तो source ~/.bash_aliases या एक नया टर्मिनल लोड फ़ंक्शन खोलें। फ़ाइल नाम में कहीं भी शब्दों, पाई और 2016 के साथ फ़ाइलों की खोज करने के लिए, करें

spot pie*2016 #or
spot 2016*pie

प्रीपेन्ड या संलग्न करने की कोई आवश्यकता नहीं है * खोज पैटर्न के रूप में आपकी क्वेरी के लिए, '*$1*' आपकी क्वेरी की शुरुआत और अंत में पहले ही वाइल्ड कार्ड प्रविष्टि टैग कर चुकी है। अतिरिक्त cd असंवेदनशील और अनैतिक अंकों को अनदेखा करने के लिए है, उदाहरण के लिए, fred फ्रेडेरिक और फ्रेडेरिक दोनों लौटेगा।

findpaper खोज को एक विशिष्ट पथ (रिकर्सिव) के तहत परिणामों तक सीमित कर देगा openpaper pie*201 खोज परिणाम या (या कई परिणामों में से पहला) खोल देगा openpaper pie*201 3 तीसरा परिणाम प्रविष्टि खुल जाएगा। बैश स्क्रिप्ट या अन्य गैर-दस्तावेज़ फ़ाइलों को खोलने से बचने के लिए, आप अतिरिक्त खोज विशेषताओं द्वारा फ़ाइल सामग्री को प्रतिबंधित कर सकते हैं। देख फ़ाइल मेटाडाटा क्वेरी अभिव्यक्ति सिंटेक्स तथा https://ss64.com/osx/mdfind.html अन्य खोज ऑपरेटर का उपयोग करने के लिए।


1
2018-02-09 04:28