मानव-पठनीय फ़ाइल नामों को फ़िल्टर करने के लिए, आप [:print:]( प्रिंट करने योग्य ) वर्ण वर्ग के नाम का उपयोग कर सकते हैं । आपको मैनुअल में ऐसी कक्षाओं के बारे में अधिक जानकारी मिलेगी grep।
find . -type f -size 1033c -name "[[:print:]]*" ! -executable
एक दूसरे विचार पर, "मानव-पठनीय" आवश्यकता फ़ाइल नाम के बजाय, फ़ाइल की सामग्री को संदर्भित कर सकती है। दूसरे शब्दों में, आप पाठ फ़ाइलों को खोज रहे होंगे । वह थोड़ा और मुश्किल है। जैसा कि @D_Bye ने एक टिप्पणी में सुझाव दिया है, आपको तब fileफ़ाइल सामग्री प्रकार निर्धारित करने के लिए कमांड का उपयोग करना चाहिए । लेकिन यह fileएक पाइप के बाद चलाने के लिए एक अच्छा विचार नहीं होगा , क्योंकि यह फ़ाइल के नाम को प्रदर्शित करने के कार्य को जटिल करेगा। यहाँ मेरा सुझाव है:
find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print
यह संक्षेप में है कि कैसे file-पार्ट काम करता है:
-execविधेय कार्यान्वित sh -c 'file -b $0 | grep -q text' FILENAMEप्रत्येक के लिए FILENAMEकि संतुष्ट सभी पिछले शर्तों (प्रकार, आकार, गैर निष्पादन योग्य)।
- उन फ़ाइलों में से प्रत्येक के लिए, एक शेल (
sh) इस संक्षिप्त स्क्रिप्ट को चलाता है :, फ़ाइल नाम के साथ file -b $0 | grep -q textबदल रहा है $0।
fileकार्यक्रम प्रत्येक फ़ाइल की सामग्री प्रकार निर्धारित करता है और इस जानकारी को आउटपुट। -bविकल्प रोकता प्रत्येक परीक्षण किया फ़ाइल का नाम मुद्रण।
grepfileप्रोग्राम से आने वाले आउटपुट को फ़िल्टर करता है , "टेक्स्ट" वाली लाइनों की खोज करता है । (अपने लिए देखें, fileकमांड का एक सामान्य आउटपुट कैसा दिखता है।)
- लेकिन
grepफ़िल्टर्ड टेक्स्ट को आउटपुट नहीं करता है, क्योंकि इसमें -q(शांत) विकल्प दिया गया है। यह क्या करता है, बस इसकी निकास स्थिति को या तो बदल दें 0(जो "सही" का प्रतिनिधित्व करता है - फ़िल्टर किया गया पाठ पाया गया था) या 1 (जिसका अर्थ है "त्रुटि" - पाठ "पाठ" से आउटपुट में प्रकट नहीं हुआ था file)।
- से आने वाली सच्ची / झूठी निकास स्थिति को और पूरी तरह से " " परीक्षण के अंतिम परिणाम के रूप में
grepपारित किया shजाता है ।find-exec sh -c 'file $0 | grep -q text' {} \;
- उपरोक्त परीक्षण सही होने पर ,
-printआदेश निष्पादित किया जाता है (अर्थात परीक्षण की गई फ़ाइल का नाम मुद्रित होता है)।