टर्मिनल के माध्यम से मैक की खोज?


22

क्या टर्मिनल का उपयोग करके अपने मैक को खोजने के लिए कोई आदेश हैं? मैंने खोज की कोशिश की, लेकिन यह कुछ हद तक अनुत्तरदायी लगता है और कुछ भी नहीं आता है।

उदाहरण के लिए, मैं "grep फ़ाइलें" (A फ़ोल्डर नाम) टाइप करूंगा और यह सिर्फ एक रिक्त रेखा को प्रिंट करता है और कुछ भी नहीं होता है।



मुझे सभी प्रकार की फ़ाइलों के माध्यम से खोज करने में दिलचस्पी है; जरूरी नहीं कि टेक्स्ट फाइल को छोड़कर केवल टेक्स्ट फाइल ही न हो।
JFW

जवाबों:


21

mdfindस्पॉटलाइट के साथ खोज करने के लिए आप कमांड का उपयोग भी कर सकते हैं । अधिक जानकारी यहाँ

mdfind -name searchtermनाम के साथ फ़ाइलों को पुनः प्राप्त करने के लिए उपयोग करें searchtermmdfind searchtermफ़ाइल नाम और सामग्री पर एक खोज करने के लिए उपयोग करें ।


25

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

मैन पेज को HERE या man findटर्मिनल प्रॉम्प्ट पर टाइप करके पाया जा सकता है ।

मूल रूप से, खोज आपके द्वारा निर्दिष्ट फ़ाइल मीटिंग मानदंड के लिए पुनरावर्ती रूप से खोजेगी। सबसे आसान उदाहरण:

find . -name file_name -print

वह "file_name" नाम की एक फ़ाइल खोजेगा जो वर्तमान निर्देशिका में शुरू हो रही है और नीचे की खोज कर रही है और उस नाम से फ़ाइलों को प्रिंट करें।

find ~ -name ".DS_Store" -delete

यह सभी .DS_Store फाइलें ढूंढेगा और उन्हें हटा देगा।

आप नाम, regex, दिनांक से खोज सकते हैं। आप फ़ाइल पर किसी भी यूनिक्स तरीके से -execविधेय के साथ कार्य कर सकते हैं ।

आप कार्यों की अधिक जटिल पाइपलाइन की शुरुआत के रूप में भी पा सकते हैं। उदाहरण:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

एक्सटेंशन वाली सभी फाइलों को .m4a या .mp3 के साथ ढूंढेगा

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

आपको उन फाइलों की गिनती देगा।


यदि -printकेवल विधेय है, तो इसे छोड़ा जा सकता है; इसके अलावा, वहाँ सरल ग्लोबिंग उपलब्ध है। इस प्रकार के सभी पाने के .txtएक निर्देशिका के अंतर्गत फ़ाइलें fooके साथ किया जा होगाfind foo -name \\*.txt
नॉर्मन ग्रे

@yoshi: यह बिल्कुल झूठ है। टाइपिंग find .आईएस सीडब्ल्यूडी से पुनरावर्ती है। find .अपने रूट डायरेक्टरी में टाइप करने की कोशिश करें !
ड्रू

मेरे बुरा यह कसम खाता हूँ सकता है पुनरावर्ती नहीं था, लेकिन शायद सर्वर -shrug- chocked है
Nuala

5

यदि आप एक संपूर्ण फ़ोल्डर के माध्यम से खोज करना चाहते हैं, तो बस grep पर -r का उपयोग करें:

grep -r pattern folder/to/search

खोजने के साथ, आप xargs का उपयोग भी कर सकते हैं:

find folder/to/search -name '*.txt' | xargs grep pattern

या यह सुनिश्चित करने के लिए कि आप एक बार में दो फ़ाइलों को खोजते हैं और इसलिए फ़ाइल नाम निर्दिष्ट हैं:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

2

grepएक पैटर्न और एक filespec दोनों की उम्मीद है। यदि कोई लापता है, तो वह उस पैटर्न का उपयोग करता है जिसे पैटर्न के रूप में पास किया गया है, और डेटा के लिए मानक इनपुट के माध्यम से खोज करने की प्रतीक्षा करता है।

यदि आप अधिक जटिल फाइलस्पेस का उपयोग करना चाहते हैं तो उपयोग करें find

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

मैं बस मूल रूप से यह चाहता हूं कि उन फाइलों को खोजूं जिनके पास नाम है जो मैं कमांड में दर्ज करता हूं।
JFW

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