मैं सामान्य रूप 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त्रुटियों को लटकाता है या प्रिंट करता है ? क्या आपने इसे रूट या सामान्य उपयोगकर्ता के रूप में चलाया?