जवाबों:
इसके लिए घुंघराले ब्रेसिज़ का उपयोग करें:
ls /opt/somedir/{aa,bb,cc}
अधिक जानकारी के लिए ब्रेस विस्तार के बारे में पढ़ें ।
बैश के तहत, चलाएं shopt -s extglob
(या इसे अपने में डाल दें ~/.bashrc
), और आप अतिरिक्त पैटर्न का उपयोग कर सकते हैं जो एक असामान्य वाक्यविन्यास (ksh से विरासत में मिला) के साथ नियमित अभिव्यक्ति प्रदान करते हैं। आप इन पैटर्नों का उपयोग ksh में भी कर सकते हैं, बेशक, और बाद में भी zsh में setopt ksh_glob
।
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Zsh में, आप सीधे (foo|bar)
पैटर्न के रूप में उपयोग कर सकते हैं ।
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
ध्यान दें कि कमांड को पूर्ण पथ के साथ कहा जाता है। यदि आप एक छोटे से मार्ग के साथ कमांड को कॉल करना चाहते हैं, तो आपको निर्देशिका को किसी भी तरह बदलना होगा, और (cd /opt/somedir && somecommand aa bb cc)
अब तक का सबसे आसान तरीका है।
आप उपयोग करके फ़िल्टर कर सकते हैं egrep
:
ls | egrep '(aa|bb|cc)'
सभी पाठ फ़ाइलों को खोजने के लिए:
ls | egrep '(aa|bb|cc).txt'
पहले, मैं आपको निर्देशित करता हूं: कभी भी पार्स एलएस , कभी नहीं । जो आप चाहते हैं उसे करने के लिए उचित और विहित तरीका खोजें ।
उदाहरण के लिए:
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
मैं आमतौर पर -name
इसके बजाय उपयोग करता हूं -regex
क्योंकि यह सरल है। लेकिन एक रेगेक्स आपके उपयोग के मामले में फिट बैठता है। आपको पहली बार बिना कमांड चलाने चाहिए -exec
, यह सुनिश्चित करने के लिए कि वे वास्तव में वे फाइलें हैं जिन्हें आप स्थानांतरित / हटाना चाहते हैं।