फ़ाइल की सामग्री के बजाय फ़ाइल नाम के लिए "grep" कैसे करें?




(5)

आप grep का उपयोग कर फ़ाइल का पूरा पथ पा सकते हैं, बस पेड़ के आउटपुट को पाइप करें

tree -f | grep filename

यहां एक ऐसा फ़ंक्शन है जिसे आप अपने .bash_profile या .bashrc में डाल सकते हैं

findfile(){ tree -f | grep $1; } # $1 = filename, -f is full path

grep का उपयोग यह देखने के लिए किया जाता है कि कोई पंक्ति किसी नियमित नियमित अभिव्यक्ति से मेल खाती है या नहीं। हालांकि, मेरे पास यह स्थिति है - मैं एक नियमित अभिव्यक्ति लिखना चाहता हूं जो फ़ाइल नाम से मेल खाएगा (और फ़ाइल की सामग्री नहीं)। नियमित अभिव्यक्ति से मेल खाने वाली सभी फ़ाइलों को खोजने के लिए, मैं सिस्टम की मूल निर्देशिका से इसे चलाऊंगा।

उदाहरण के लिए, यदि मैं सभी वीबी फॉर्म फाइलों को खोजना चाहता हूं जो "एफ" से शुरू होते हैं और .frm के साथ समाप्त होते हैं, तो मैं नियमित अभिव्यक्ति का उपयोग करूंगा -

   "f[[:alnum:]]*\.frm"

क्या यह कर सकता है? यदि नहीं, तो क्या ऐसी उपयोगिता है जो मुझे ऐसा करने देगी? धन्यवाद।


आप यह भी कर सकते हैं:

tree | grep filename

यह एक खोज के लिए grep करने के लिए पेड़ कमांड के उत्पादन पाइप। यह केवल आपको बताएगा कि फ़ाइल मौजूद है या नहीं।


जैसा कि पाब्लो ने कहा था, आपको grep बजाय find का उपयोग करना होगा, लेकिन grep को पाइप find की कोई आवश्यकता नहीं है। find हैं कि उस कार्यक्षमता में निर्मित है:

find . -regex 'f[[:alnum:]]\.frm'

खोज नाम से फ़ाइलों की खोज के लिए एक बहुत ही शक्तिशाली कार्यक्रम है और फाइल प्रकार, गहराई से सीमित, बूलियन संचालन के साथ विभिन्न खोज शब्दों को संयोजित करने और पाए गए फ़ाइलों पर मनमाने ढंग से आदेश निष्पादित करने का समर्थन करता है। अधिक जानकारी के लिए ढूंढें मैन पेज देखें।


नहीं, grep इस के लिए बस ठीक काम करता है:

 grep -rl "filename" [starting point]

 grep -rL "not in filename"

find -iname "file_name"

Syntax :-
find -type type_descriptor file_name_here

type_descriptor प्रकार: -

एफ: नियमित फ़ाइल

डी: निर्देशिका

एल: प्रतीकात्मक लिंक

सी: चरित्र उपकरण

बी: ब्लॉक डिवाइस