कैसे टर्मिनल में कुछ पाठ के साथ फाइल खोजने के लिए


166

मैं उन सभी फाइलों को ढूंढना चाहता हूं जिनमें पाठ की एक निश्चित स्ट्रिंग होती है। टर्मिनल में आप ऐसा कैसे करेंगे?


यदि आप एक तेज़ परिणाम चाहते हैं, तो स्पॉटलाइट का उपयोग करें, हालांकि। इसके अलावा अगर आप ऐसी फाइलें ढूंढना चाहते हैं जो जरूरी नहीं कि सीधे पीडीएफ या ओडीएफ जैसी फाइल में ही स्टोर करें।
जॉय

अच्छी सलाह है, लेकिन मेरे मामले में मुझे यकीन नहीं है कि फाइलों को अनुक्रमित किया गया है क्योंकि वे नेटवर्क ड्राइवरों पर हैं। और यह भी कि वे एक विशेष कार्यक्रम से संबंधित xml फाइलें हैं।
स्विश जूल

Unix.stackexchange.com/a/37932/213832 पर एक नज़र डालें यह समाधान अच्छी तरह से काम करता है
boyd4715

जवाबों:


276
grep -r 'text goes here' path_goes_here

1
मैं सुझाव man grep
दूंगा

यह पथ में मौजूद प्रत्येक फ़ाइल को सूचीबद्ध करता है और जोड़ता है: No such file or directory मैं केवल पाठ घटनाओं की सूची प्राप्त करने की कोशिश कर रहा हूं। हम उस सूची को कैसे प्राप्त कर सकते हैं?
CP3O

7
मिल गया grep -lr "text pattern" ./ -s:; grep -lr "text pattern" [PATH OF PARENT] -s
CP3O

लेकिन यह मिलान करने वाली फ़ाइलों की सामग्री को लौटाता है, न कि फ़ाइल विवरण (नाम, पथ)। @ CP3O का सुझाव काम करता है।
जियोथेट्री

28

स्पॉटलाइट का उपयोग करें

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

देखना न भूलें:

man mdfind

2
क्या यह उन फाइलों के लिए काम करेगा जो स्पॉटलाइट इंडेक्स नहीं करता है (यानी छिपी हुई फ़ोल्डर, सिस्टम कॉन्फिग फाइल आदि के अंदर फाइलें)?
पीटर बर्ग

Grep .xlsx फ़ाइलों को पार्स करने के लिए प्रतीत नहीं होता है, लेकिन यह ठीक काम करता है। एक और आसान उदाहरण: mdfind -onlyin। "सर्चटेक्स्ट"
FvD

11
  1. एक के माध्यम से

brew install ack ack "text goes here"

  1. खोज के माध्यम से

find . |grep "text goes here"

  1. Grep के माध्यम से

grep -RnslI "text goes here"


4

आप अपने स्वाद और जरूरतों के आधार पर नीचे दिए गए विकल्पों में से एक चुन सकते हैं। मान लें कि आपको पाठ युक्त फ़ाइलों की खोज करने की आवश्यकता है - "async", वर्तमान निर्देशिका में पुनरावर्ती, आप नीचे दिए गए तरीकों में से एक में ऐसा कर सकते हैं:

Grep का उपयोग करना यहाँ छवि विवरण दर्ज करें

आक का उपयोग करना यहाँ छवि विवरण दर्ज करें


2

इग्नासियो का जवाब बहुत अच्छा है और मुझे कुछ पाठ युक्त फाइलें खोजने में मदद मिली। एकमात्र मुद्दा जो मैं सामना कर रहा था, वह यह था कि इस कमांड को चलाने के दौरान सभी फाइलें सूचीबद्ध होंगी, जिसमें वह भी शामिल है जहां पैटर्न नहीं दिखा।

No such file or directory यह वही है जो मैं उन फ़ाइलों के साथ देखता हूं जिनमें पैटर्न नहीं है।

यदि इसके बजाय आप -sकमांड में जोड़ते हैं , जैसे: में grep -lr "text pattern" ./ -s; grep -lr "text pattern" [PATH DIRECTORY] -sउपयोग किया जाता है, यह केवल आपको दिखाएगा कि किन फाइलों में पैटर्न है।

इसी प्रकार यदि grep -nr "text pattern" ./ -s; grep -nr "text pattern" [PATH OF DIRECTORY] -sकमांड का उपयोग किया जाता है यह फ़ाइल को प्लस लाइन नंबर और पैटर्न की घटना को प्रिंट करता है।

अगर मेरी समझ गलत है तो कृपया मुझे सुधारें।

संदर्भ: मेरे पास 'नहीं ऐसी कोई फ़ाइल या निर्देशिका' त्रुटियों का प्रिंट आउट कैसे हो सकता है?


उन pesky से बचने का एक और तरीका है ऐसी कोई फ़ाइल त्रुटियां नहीं हैं, स्टडर को नल करने के लिए पाइप करना है। grep ... 2>/dev/null। यह समाधान अधिकांश कार्यक्रमों के लिए काम करता है, क्योंकि वे stderr स्ट्रीम पर त्रुटि संदेशों की रिपोर्ट करते हैं, stdout की नहीं। मैंने कई बार इस समाधान का उपयोग किया है find, क्योंकि यह कहेगा कि अनुमति कई फ़ाइलों के लिए अस्वीकृत है
18

(1) यदि आप उन No such file or directoryफ़ाइलों के लिए संदेश प्राप्त कर रहे हैं जो मौजूद हैं, या तो आप कुछ गलत कर रहे हैं, या आपका सिस्टम टूट गया है। (२) किसी चीज से क्या [PATH OF PARENT]लेना-देना है?
जी-मैन

@ जी-मैन मैंने जवाब दिया कि [PATH OF DIRECTORY]किसी अपरिचित व्यक्ति को दिखाने के लिए मैं यह जानना चाहता हूं कि मैंने यह क्यों जानना चाहा./
CP3O

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