मैं सामान्य रूप grep
से कई फाइलों को चलाने के लिए कमांड की इस शैली का उपयोग करता हूं :
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
यह वास्तव में क्या करता है सिस्टम पर प्रत्येक फ़ाइल की एक सूची बनाता है, और फिर प्रत्येक फ़ाइल के लिए, grep
दिए गए तर्कों और प्रत्येक फ़ाइल के नाम के साथ निष्पादित करें।
-xdev
तर्क कहता है लगता है कि यह अन्य फ़ाइल सिस्टम को नजरअंदाज करना होगा - यह इस तरह के रूप में विशेष फ़ाइल सिस्टम से बचने के लिए अच्छा है /proc
। हालाँकि, यह सामान्य फाइल सिस्टम को भी नजरअंदाज कर देगा - इसलिए यदि, उदाहरण के लिए, आपका / होम फोल्डर एक अलग विभाजन पर है, तो इसे खोजा नहीं जाएगा - आपको कहना होगा find / /home -xdev ...
।
-type f
इसका मतलब केवल फाइलों के लिए खोज करना है, इसलिए निर्देशिकाओं, उपकरणों और अन्य विशेष फ़ाइलों को अनदेखा किया जाता है (यह अभी भी निर्देशिकाओं में फिर से आ जाएगी और grep
फाइलों grep
पर निष्पादित करेगा - यह केवल निर्देशिका पर ही निष्पादित नहीं करेगा , जो वैसे भी काम नहीं करेगा)। और -H
विकल्प grep
यह बताता है कि इसके आउटपुट में फाइलनाम को हमेशा प्रिंट करें।
find
फ़ाइलों की सूची को फ़िल्टर करने के लिए सभी प्रकार के विकल्पों को स्वीकार करता है। उदाहरण के लिए, -name '*.txt'
केवल .txt में समाप्त होने वाली फ़ाइलों को संसाधित करता है। -size -2M
फ़ाइलों का मतलब है कि 2 मेगाबाइट से छोटी हैं। -mtime -5
पिछले पांच दिनों में संशोधित फाइलें। के लिए और -o के लिए -a के साथ या , और समूह अभिव्यक्तियों के लिए '('
कोष्ठकों ')'
का उपयोग करें (उद्धरण में उन्हें व्याख्या करने से रोकने के लिए) के साथ एक साथ शामिल हों । उदाहरण के लिए:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
man find
संभावित फ़िल्टर की पूरी सूची देखने के लिए एक नज़र डालें ।
Permission denied
त्रुटियों को लटकाता है या प्रिंट करता है ? क्या आपने इसे रूट या सामान्य उपयोगकर्ता के रूप में चलाया?