यहाँ एक लाइनर है:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
जैसा कि मैंने वीएलसी स्थापित किया है (और एमपी 3 के लिए डिफ़ॉल्ट के रूप में), यह मेरे लिए वीएलसी के साथ एक निर्देशिका में सभी एमपी-फाइलें खोलता है। यह " सार्वभौमिक-हल-इट-ऑल-एंड-द-वर्क-इन-हर-फ्रेकिंग-केस " नहीं है, लेकिन यह काम करना चाहिए ।
स्पष्टीकरण:
ls -AQp
"लगभग सभी" फाइलों को सूचीबद्ध करता है, फाइलनामों को उद्धृत करता है और निर्देशिकाओं के नामों को स्लैश करता है। बदलें -p
के साथ --file-type
अगर आप सिमलिंक को बाहर करने के साथ ही कामना करते हैं। फ़ाइल नाम में रिक्त स्थान के मामले में उद्धृत करना।
grep "\.mp3\"$"
केवल ".mp3" (प्लस डबल-उद्धरण) के साथ समाप्त होने वाली फ़ाइलों का चयन करता है।
xargs
पूरे लॉट को पुनर्निर्देशित करता है कि प्रोग्राम के बाद सबस्क्राइब रिटर्न।
subshell:
xdg-mime query default audio/mpeg
उन फ़ाइलों के लिए डिफ़ॉल्ट ऐप का नाम "app.desktop" देता है, जिनका माइम है audio/mpeg
। आप अपने वातावरण की किसी भी फ़ाइल के लिए mimetype की जाँच कर सकते हैं xdg-mime query filetype /path/to/file
। मुझे एमपी-फाइल के लिए "ऑडियो / एमपीईजी" मिला।
grep -oP '.+(?=\.desktop)'
"app.desktop" से "ऐप" मिलता है।
यदि आप इसे बहुत बार उपयोग करने वाले सिस्टम में उपयोग करने जा रहे हैं, तो आप इसे छोटा कर सकते हैं:
ls -AQp | grep "\.mp3\"$" | xargs default_app
जहां आप default_app
फाइलों के साथ खुलने वाले वास्तविक प्रोग्राम को बदल देते हैं। आप इसके साथ इसका नाम पता कर सकते हैं:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
इस समस्या के साथ काम नहीं करेगा, क्योंकि यह डिजाइन द्वारा केवल एक तर्क को स्वीकार करता है। यदि उपयोग
xargs -n1
कर रहे हैं, तो आप संभावित रूप से उस दीवार से टकराते हैं, जिसके परिणामस्वरूप आने वाला ऐप हर फ़ाइल को एक नए उदाहरण में खोल सकता है, जो एक से अधिक तरीकों से बदसूरत हो सकती है।
xdg-open
वास्तव में डिफ़ॉल्ट रूप से ऐसा करने में सक्षम होना चाहिए ... बस तर्क सूची को कार्यक्रम में पास करें। Freedesktop.org पर आएं लोग! :-)