find . -name *mobile* # does not work
बनाम
find . -name '*mobile*' # works
अंतर यह है कि खोल जब यह एक पंक्ति को पार्स करता है लेता चरणों के कारण है। आम तौर पर, खोल किसी भी वाइल्डकार्ड को फैलाता है जो इसे कमांड चलाने से पहले पाता है। हालांकि, एकल उद्धरण तर्क को शाब्दिक होने के रूप में चिह्नित करते हैं, जिसका अर्थ यह है कि शेल कमांड चलाने से पहले उस तर्क पर वाइल्डकार्ड विस्तार को पूर्ववत नहीं करता है।
अंतर प्रदर्शित करने के लिए, मान लीजिए आप निम्न फ़ाइलों के साथ एक निर्देशिका में हैं:
find . -name mobile.1
कि इसका मतलब है:
$ tree
./
mobile.1
dir/
mobile.2
zsh चलाने से पहले निम्न के प्रथम रूप का विस्तार होगा खोज केवल शाब्दिक मोबाइल नाम की फाइलों को देखेंगे।
दूसरा फॉर्म निम्नानुसार चलाया जाएगा:
find . -name *mobile*
जिसका अर्थ है कि खोज "मोबाइल" स्ट्रिंग वाले किसी फ़ाइल नाम की तलाश करेगी।
यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि दोनों zsh और समान वाइल्डकार्ड वाक्यविन्यास का समर्थन करते हैं, लेकिन आप इस मामले में वाइल्डकार्ड को संभालना चाहते हैं, zsh नहीं।
मुझे लगता है कि इसका यहां एक बेहतर उत्तर है: https://unix.stackexchange.com/questions/130958/scp-wildcard-not-working-in-zsh – sttaq