यह फ़ाइल 'शो' क्यों नहीं मिलती है?


21

एक का उपयोग findकरके grep, एक पैटर्न से मेल खाने वाली फ़ाइलों का पता लगा सकते हैं:

# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log

हालाँकि, findअकेले पहली फ़ाइल का उपयोग नहीं किया गया है:

# find . -name error*
./error_log
./includes/classes/error_log

जब उपयोग नहीं किया जाता है तो फ़ाइल का findपता क्यों नहीं लगाया errors.htmlजाता है grep? findइस फ़ाइल को दिखाने के लिए कैसे उपयोग किया जाता है?

जवाबों:


42

आपको अपने तर्क को उद्धृत करने की आवश्यकता है error*क्योंकि शेल इसे विस्तारित करता है। तो अब आप वास्तव में जो चला रहे हैं find -name error_log, वह यही है क्योंकि शेल इसका विस्तार कर सकता है ( error_logआपकी वर्तमान निर्देशिका में एक फ़ाइल नाम है)।

find . -name 'error*'

अपने उपयोग के मामले के लिए सही आह्वान है।


12
एक अल्टनेटिव लेखन है find -name error\*- प्रेस करने के लिए एक कुंजी;) इसका एक ही प्रभाव होता है, *एक साक्षर तारक के रूप में मिल जाता है जो कमांड को देता है और आपके शेल द्वारा विस्तारित नहीं होता है
zhenech

3
शेल के साथ समस्या होने पर (यह आपकी कमांड-लाइन की व्याख्या कैसे करता है और वास्तविक कमांड को सभी तर्क और मापदंडों को पारित करता है), कमांड को इसे echoकमांड के साथ प्रीपेडिंग करके फिर से चलाएं । तो, अगर आप इसे चलाते हैं तो echo find . -name error*इसका उत्पादन होगाfind . -name error_log
कार्लोस कैंपड्रेस्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.